首先我要澄清的是,我不是直接使用MVC,而是Razor Pages。
我正在考虑在_Layout.cshtml模板中获取动态数据(数据库)的最佳方法,以便它们在所有页面上都可用:
1)我的第一个选择是创建一个PartialView,让我们称它为_Header.cshtml,包含以下测试内容:
@page
@model _HeaderModel
<div id = "header">
@ Model.HeaderMessage
</ div>
在_Layout.cshtml模板中使用:
@await Html.PartialAsync ("_ Header", new _HeaderModel ())
但是,这会导致以下错误:
"Object reference not set to an instance of an object.",这是我不太理解的,因为在方法中传入new _HeaderModel ()的实例时。
不应该工作吗?如果我没有指定在_IndexModel和_HeaderModel之间发生模型错误: ViewDataDictionary实例需要一个_HeaderModel类型的模型项。
这是一种好的方法吗?若然,原因何在?
2)在我看来,我的第二个选择是创建一个PageModel库,它的属性将被所有从PagesModel库继承的PageModel使用。
任何好的建议都是受欢迎的。
发布于 2018-08-21 05:11:01
我不知道这是否是Visual Studio的错误,即使我显式地添加了一个页面,Visual Studio在PartialView中包含了@ PartialView,这就是导致错误的原因。
_Header.cshtml
@page //已删除
@model _HeaderModel
<div id="header">
@Model.HeaderMessage
</div>
现在它可以工作了
_Layout.cshtml
@await Html.PartialAsync ("_ Header", new _HeaderModel ())
https://stackoverflow.com/questions/51938148
复制相似问题