我有以下顶部的页面:如何将模型从剃须刀页面传递到其主页面/布局页面?
@model AppMainModel
@{
ViewData["Title"] = "Home Page";
}
我想用AppMainModel及其属性在其主/页面布局。如果可能的话,强烈键入(例如,避免ViewData等)。
这可能吗?
我有以下顶部的页面:如何将模型从剃须刀页面传递到其主页面/布局页面?
@model AppMainModel
@{
ViewData["Title"] = "Home Page";
}
我想用AppMainModel及其属性在其主/页面布局。如果可能的话,强烈键入(例如,避免ViewData等)。
这可能吗?
ViewModel数据可用于布局页面。如果您希望在布局页面中强类型化,可以考虑使用公共数据来创建页面viewmodel类。如果不是,只需使用ViewData的动态特性传递常见的东西。如果看起来合适,您甚至可以应用全局过滤器来设置公用数据。 Solution From here
您可以在布局页面上设置的@model
还有:
@model AppMainModel
<html>
<head>
<title>@Model.Title</title>
</head>
...
</html>
但是,你必须确保你每次使用此布局你通过一个从AppMainModel
继承的模型。
为了避免是非强类型的_layout页面上,我建议你看看下面的伟大@jgauffin博客文章Getting information into the Layout without using ViewBag.
使用在总结一LayoutViewModel:
OnResultExecuting()
方法WebViewPage
,并在web.config
注册,使其能够使用Viewbase布局模型作为pageBaseType
举个例子:我用这个方法来传递元字段值到我的_Layout页面。
我假设你的意思是布局页面?只需在其中添加'@model AppMainModel',但目前还不清楚为什么要将布局页面绑定到模型 –
@StephenMuecke是,布局页面。引导程序导航栏位于布局页面中,我需要它作为数据驱动。这就是原因。 – AngryHacker
问题是您的布局现在只能被具有'@model AppMainModel'的视图使用。我怀疑你真正想要的是使用'@ Html.Action()'来调用一个返回导航栏的局部视图的方法 –