1

私は C#/MVC の比較的初心者であり、長方形の配列を ViewData に渡すとき (そして View ファイル内から内容を表示しようとするとき) に問題に遭遇しました。

私の配列はデータベースクエリから取り込まれています。私が見る限り、それはうまくいきます:

Media [
    Images [
        [Id (int), Type (int), File (string), Title (string)],
        [Id (int), Type (int), File (string), Title (string)],
        [Id (int), Type (int), File (string), Title (string)]
    ]
    Videos [
        [Id (int), Type (int), File (string), Title (string)],
        [Id (int), Type (int), File (string), Title (string)]
    ]
]

メイン配列 (画像とビデオ) の各半分をコントローラーの個別の ViewData オブジェクトに割り当てています。

ViewData["Images"] = Media.Images.ToArray();
ViewData["Videos"] = Media.Videos.ToArray();

ビューはこれらのオブジェクトが存在することを認識していますが、各配列をループしてビュー内から個々のインデックス (Id、Type、File、Title) にアクセスし、各部分をビューの HTML に追加する方法がわかりません。コード。

1 つのオプションは、コントローラーで HTML を構築することですが、私は本当にそれを避けたいと思っています。

私が間違っているアイデアはありますか?

編集:これが修正です。私を正しい軌道に乗せてくれた皆さんに感謝します:)

コントローラ:

ViewBag.Images = Media.Images;

Web.Config:

<namespaces>
    <add namespace="Path.to.Models" />
    ...
</namespaces>

意見:

str_code = "<ul>";

foreach (Media image in ViewBag.Images)
{
    str_code += "<li>" + image.Title + "</li>";   
}

str_code += "</ul>";

Response.Write(str_code);
4

1 に答える 1

1

Media.Images.ToArray();オブジェクトの配列が得られると思いますMyImage

マイイメージ

public class MyImage
{
    public int Id       { get; set; }
    public int Type     { get; set; }
    public string File  { get; set; }
    public string Title { get; set; }
}

次に、Razor コード:

@foreach (MyImage image in ViewData["Images"])
{
    <p>@image.Id</p>
    <p>@image.Type</p>

     ...
}

ViewBagまたは、コントローラーで利用可能な動的プロパティを使用できます。

ViewBag.Images = Media.Images.ToArray();

それで:

@foreach (MyImage image in ViewBag.Images)
{
    <p>@image.Id</p>
    <p>@image.Type</p>

     ...
}
于 2012-09-04T15:32:30.590 に答える