1

だから私はエリア設定(管理者)を持っています。管理エリアには、_ViewStart.cshtmlファイルにリンクするファイルがありShared/_Layout.cshtmlます。

私が必要とするのは、レイアウト ファイルが (モデルのような) データを渡されるようにすることです。ページの右上に、管理領域のすべてのページに共通のドロップダウンがあります。他の領域やアプリケーションのルートでは使用されず、この領域でのみ使用されます。

共通のコントローラーをレイアウトに割り当てる方法はありますか、Partialそれともこれを進める方法はありますか?

4

1 に答える 1

3

子アクションを使用できます。モデルを定義できます:

public class MyViewModel
{
    public string SelectedId { get; set; }
    public IEnumerable<SelectListItem> Items { get; set; }
}

次に、コントローラーを用意します。

public class ItemsController: Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            Items = new[]
            {
                new SelectListItem { Value = "1", Text = "item 1" },
                new SelectListItem { Value = "2", Text = "item 2" },
                new SelectListItem { Value = "3", Text = "item 3" },
            }
        };
        return PartialView(model);
    }
}

そして、対応する部分 ( ~/Areas/Admins/Views/Items/Index.cshtml):

@model MyViewModel
@Html.DropDownListFor(x => x.SelectedId, Model.Items)

ここで、あなたのレイアウト内で、このアクションをレンダリングできます:

@Html.Action("Index", "Items", new { area = "admin" })
于 2012-07-28T13:38:19.310 に答える