2016-10-12 7 views
1

私の質問はthis oneと非常に似ています。Razor WebPage:データベースから複数のページにデータを転送するには?

私の2つのページ、データを編集する1ページ、それを表示する1ページのデータベースと同じデータ(オブジェクトの属性、各行はオブジェクトを表します)を取得します。冗長なコードを減らし、メンテナンスを改善するために、データを一度だけロードするコードを書きたいと思っていました。

私の考えは_PageStart.cshtmlです。しかし、それで私はPageData配列に文字列を格納できますが、オブジェクトは格納できません。

データベースの行を複数のページに表示するにはどうすればよいですか?ここで

は、私は、データベースからデータを取得する方法である:

var db = Database.Open("mydb"); 
String query = "select * from motors"; 
var rows = db.Query(query); 

System.Data.DataTable motors = new System.Data.DataTable(); 
motors.Columns.Add("posX", typeof(int)); 
motors.Columns.Add("posY", typeof(int)); 

IEnumerator<dynamic> en = rows.GetEnumerator(); 
while (en.MoveNext()) { 
    motors.Rows.Add(en.Current.posX, en.Current.posY); 
} 

私は別のページにDataTableのmotorsにアクセスしたいと思います。

答えて

1

あなたがしなければならないのは、その後、あなたはそれだけで使用表示好きなページに、それだけであなたのコードを持っているページを作成することです:

@RenderPage("~/yourpage.cshtml"); 
+0

私はDataTableの 'motors'にアクセスしようとしました。 Visual Studio(と私がページを実行した後のサーバー)は、_現在のコンテキストには名前 'motors'が存在しないと言っています._ – elementzero23

+0

残念ながら、コードページに出力を置く必要があります。もう1つのオプションは、データの一部にしかアクセスしたくない場合に、レイアウトページでコードの先頭にクエリを配置し、@ Page.motorsを使用して呼び出すことができます。しかし、代わりにPageMotorsとして変数モーターを指定する必要があります。 – James

+0

"出力"とはどういう意味ですか?そして、 'yourpage.cshtml'にコードを入れて、' @ yourpage.motors'のようにDataTableにアクセスすることはできません。 – elementzero23

関連する問題