我有一个页面,其中包含以下内容:
@model AppMainModel
@{
ViewData["Title"] = "Home Page";
}
我想在其主/布局页面中使用AppMainModel及其属性。尽可能强类型化(例如,避免使用ViewData等)。
这可能吗?
答案 0 :(得分:0)
ViewModel数据可用于布局页面。如果您希望在布局页面中强类型,则可以考虑使用包含公共数据的页面viewmodel类。如果没有,只需使用ViewData的动态特性传递常见的东西。如果合适,您甚至可以应用全局过滤器来设置公共数据。 Solution From here
答案 1 :(得分:0)
您也可以在布局页面上设置@model
:
@model AppMainModel
<html>
<head>
<title>@Model.Title</title>
</head>
...
</html>
但是,您必须确保每次使用此布局时都传递一个继承自AppMainModel
的模型。
答案 2 :(得分:0)
为避免在_Layout页面上进行非强类型输入,建议您查看以下关于Getting information into the Layout without using ViewBag.
的精彩@ jgauffin 博客文章在摘要中使用LayoutViewModel:
OnResultExecuting()
方法WebViewPage
的Viewbase布局类,并在web.config
中注册以将您的Viewbase布局模型用作pageBaseType
一个例子:我使用这种方法将元字段值传递给我的_Layout页面。