首先,我澄清一点,我不是直接使用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 ())
但是,这会导致错误:
“对象引用没有设置为对象的实例 . ”,我真的不明白,因为在方法中传递一个新的_HeaderModel()的实例
不应该工作?如果我没有指定_IndexModel和_HeaderModel之间发生模型错误:ViewDataDictionary实例需要一个类型为_HeaderModel的模型项 .
这会是一个好方法吗?如果是这样,为什么不呢?
2) 在我看来,我的第二个选择是创建一个PageModel基础,其属性将由从PageModel base继承的所有PagesModel使用 .
任何建议都会受到欢迎 .
1 回答
我不知道它是否是一个Visual Studio错误,即使我明确添加了PartialView,Visual Studio在PartialView中包含@page,这也是导致错误的原因 .
_Header.cshtml
现在它有效
_Layout.cshtml