0

コントローラ内に、IDと文字列を含む「ObjectData」というクラスがあります。

public class ObjectData
{
    public int ObjectId { get; set; }
    public string Name { get; set; }
}

これらのリストをViewBagを介してビューに渡そうとしていますが、クラスタイプが正常ではないため、配列内のアイテムをループする方法がわかりません。IDと名前だけが必要なときに、オブジェクトとそのデータの束をビューに渡したくないので、このようにしています(これは有効な懸念事項ですか?)。

私はこのようにループすることを考えています:

foreach (ObjectData i in ViewBag.ParentSetIds)
{
    @Html.ActionLink(i.Name, "Detail", new { objectId = i.ObjectId }, null)
}

しかし、Razorはそのクラスタイプを認識しません。これはどのように達成できますか?

4

3 に答える 3

1

あなたが使用することができます:

foreach (var i in ViewBag.ParentSetIds)

そして、ViewBag.ParentSetIds に基づいてコンパイラに名前空間を決定させます。

于 2013-02-15T00:27:09.193 に答える
0

コントローラー内に、ID と文字列を含む「ObjectData」というクラスがあります。

待って、何?コントローラーにクラスがあるのはなぜですか?

これらのリストを ViewBag 経由でビューに渡そうとしていますが、

ビューモデルを使用するだけです。もしそうなら、あなたはList<ObjectData>それの一部を作ることができます。コントローラーで、そのリストをロードし (これを と呼びましょうObjectDataList)、それをビューに送信します。

ビュー(かみそり)では、次のようになります。

@model MyProject.MyModel

@foreach(var i in Model.ObjectDataList)
{
   @Html.ActionLink(i.Name, "Detail", new { objectId = i.ObjectId }, null)
}

編集:

明確にするために、ビューモデルは次のようになります。

public class MyModel
{
     public string Title {get;set;}
     public List<ObjectData> ObjectDataList {get;set;}

}
于 2013-02-15T00:37:45.953 に答える