首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将模型发送到_Layout.cshtml (我还需要将另一个模型发送到索引视图)

如何将模型发送到_Layout.cshtml (我还需要将另一个模型发送到索引视图)
EN

Stack Overflow用户
提问于 2015-08-09 03:44:06
回答 2查看 6.9K关注 0票数 1

我需要发送两个不同的Models,一个给Index view,另一个给_Layout.cshtml,我该怎么做?

我的HomeController

代码语言:javascript
复制
[Route("")]
public ActionResult Index()
{
    HomeViewModel model = new HomeViewModel();
    model.A = _repoA.GetLatest(4);
    model.B = _repoB.GetLatest(4);
    model.C = _repoC.GetLatest(4);
    return View(model);
}

我不喜欢使用ViewBagViewData & ...,我正在寻找传递模型的方式,就像我们传递模型到Views一样。

EN

回答 2

Stack Overflow用户

发布于 2016-03-10 05:47:48

你可以把这个放在你的布局中,每次加载一个部分...在每个页面上加载一段动态菜单或一个小部件非常有用。

随着这行在您的布局,您可以只做您的索引页,您通常会这样做。

代码语言:javascript
复制
@{ Html.RenderAction("_widget", "Home"); }
票数 3
EN

Stack Overflow用户

发布于 2016-03-10 05:24:23

您需要在ViewBag中发送它。我发现最好的办法是做一个抽象的控制器:

代码语言:javascript
复制
public abstract class ApplicationController : Controller
{
    protected ApplicationController()
    {
         UserStateViewModel = new UserStateViewModel();
         //Modify the UserStateViewModel here.
         ViewBag["UserStateViewModel"] = UserStateViewModel;
    }

    public UserStateViewModel UserStateViewModel { get; set; }
}

然后,让你的所有控制器继承这个抽象控制器。

在你的_Layout.cshtml (或者你怎么称呼它)中,你需要在顶部包含以下内容:

代码语言:javascript
复制
@{
     var userState = (UserStateViewModel)ViewBag.UserStateViewModel;
}

复制,但从第二个答案提炼到ASP.NET MVC Razor pass model to layout

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31897859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档