1

ControllerA の一部:

public ActionResult Index()
    {
        ViewBag.Message = "ToolScope Testing";

        var Baselines = from b in db.Baselines
                            orderby b.Name
                            select b;
        ViewBag.Baselines = Baselines;

        return View();
    }

ControllerA のビューの一部

@foreach (var item in @ViewBag.Baselines) 
    { 
        <tr>
            <li> @Html.ActionLink( item.Name, "Details", "BaseLine",new { id = item.BaselineID }, null) </li>
        </tr>
    }

item.Name が問題を引き起こしていますが、次のようなものを使用すると機能します

    <li> @Html.ActionLink( "SomeName", "Details", "BaseLine",new { id = item.BaselineID }, null) </li>

動的な名前、つまり最初の ActionLink を取得するにはどうすればよいですか?

PS:私はMVCが初めてです

4

1 に答える 1

1

あなたはMVCが初めてだと思います。朗報です。すでに V(iew) と C(コントローラー) を取得しています。さあ、M(オデル)をマスターしましょう。あなたの例では、ViewBag を使用して、コントローラーからビューに知識を転送しています。これは、モデルの典型的な責任です。そのため、Models ディレクトリに新しいクラスを作成する必要があります。おそらく次のようになります。

public class MyFirstModel
{
    public IEnumerable<MyCustomType> Baselines { get; set; }

    public MyFirstModel() { }
}

コントローラーを編集する

public ActionResult Index()
{
    ViewBag.Message = "ToolScope Testing";

    var baselines = from b in db.Baselines
                        orderby b.Name
                        select b;

    var model = new MyFirstModel
    {
        Baselines = baselines
    };

    return View(model);
}

次に、これをビューの上部に追加します。

@model MvcApplication.Models.MyFirstModel

代わりに、ビューで次のコードを使用できます。

@foreach (var item in Model.BaseLines) 
{ 
    <tr>
        <li> @Html.ActionLink( item.Name, "Details", "BaseLine",new { id = item.BaselineID }, null) </li>
    </tr>
}
于 2012-08-12T21:08:11.423 に答える