MVC - 如何在_Layout中包含一个模型用于部分视图

时间:2014-06-27 00:12:34

标签: asp.net-mvc asp.net-mvc-4 razor

我已经了解了如何在视图中使用部分视图,并了解模型如何从视图传递到部分视图。我不了解的是如何在_Layout.cshtml中包含一个部分视图,以便我可以将它传递给部分视图 - 或者,部分视图本身如何调用Controller Action来创建一个模型以供使用。

具体来说,我希望在_Layout.cshtml中包含一个部分视图,以显示在每个页面的标题中。 “部分视图”将在“用户配置文件”中显示自定义设置。在没有进行Controller Action调用的情况下,我无法想到获取模型的任何方法 - 但是如何在_Layout.cshtml中为/ Partial View中完成这个?

我唯一的选择是访问Controller Action来构建我的部分视图所需的模型以使用jQuery调用吗?或者还有另一种方式吗?

1 个答案:

答案 0 :(得分:4)

答案是致电@Html.Action()

听起来你走在正确的轨道上。

关键是尝试传递多个模型,使模型复杂化,或者不必要地使用ViewBag。

相反,只要您想在每个页面上获取信息,请从_Layout调用操作。

例如,您可能有一个名为PartialsControllerSharedController的控制器。

public class PartialsController : Controller
{
    [ChildActionOnly]
    public ActionResult UserProfilePartial()
    {
        UserProfileModel model = new UserProfileModel();

        return PartialView("_UserProfile", model);
    }
}

ChildActionOnlyAttribute表示用户无法直接访问操作。只有您的代码才能调用该操作。您还可以将属性应用于控制器,以便它自动影响所有操作。

现在从您的视图中调用该操作(_Layout)。

@Html.Action("UserProfilePartial", "Partials")