0

MVC の使用を開始し、エンティティ フレームワークから値を返すコントローラーを持つ単純なプロジェクトをセットアップしました。テンプレートのデフォルトとしてビジュアルスタジオが設定されているインデックスページのコントローラーがあります。

この値が Web サイトのインデックス ページに返されることを願っています。

コントローラーコード

 MISEntities db = new MISEntities();

    public ActionResult Index()
    {
        ViewBag.Message = "Real Time Production";

        var scrap = from r in db.tbl_dppIT
                        select r.CastGood; 

        return View(scrap);
    }

かみそりを使用して var スクラップにアクセスするにはどうすればよいですか? viewbag メソッドとその他のかみそりの構文を見てきましたが、この項目にアクセスする方法がわかりません。

4

3 に答える 3

5

コントローラー変数がvarキーワードを使用して宣言されているからといって、型がないわけではありません。むしろ、これは C# に、型がそのコンテキスト (この場合はIEnumerable<T>型が何であれtbl_dppIT.CastGood) によって推論される必要があることを伝えます。

@modelしたがって、他の3つの回答は部分的に正しいため、他の回答で示されているように、 razor キーワードを介してビューに渡されるモデルのタイプを定義する必要があります。

// In your view Razor:
@model IEnumerable</* type of CastGood */>

既に指定されている 3 つの回答に代わるものがあります。それは、scrap変数をViewBagコントローラーの に貼り付けることです。

ViewBag.Scrap = scrap;

Scrapビュー内からexpando プロパティにアクセスViewBagすると、動的オブジェクトになるため、IntelliSense の助けは得られません。しかし、それは別の方法です。すべての可能性を知っているからです。

アップデート:

以下のコメントに基づいて、CastGood が null を許可され、型が であるデータベース列である場合、次のようになりますint

@model IEnumerable<int?>

HTH。

于 2013-08-28T13:09:33.650 に答える
1

ビューを厳密に型指定する必要があり、Model インスタンスとして使用できます。

@model IEumerable<MyType>

@foreach(var item in Model)
{
    @*do something with it *@
}
于 2013-08-28T13:02:30.630 に答える
1

@modelキーワードを使用して、View 内のモデルとして変数 Scrap の型を宣言する必要があります。

// View.cshtml

@model IEnumerable<Namespace.ScrapType>

@foreach(var item in Model) {
    <p>@item.SomeProperty</p>
}

パート 3: MVC ミュージック ストアの例のビューとビューモデルを参照してください。

于 2013-08-28T13:01:56.737 に答える