首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >_layout.cshtml模板中的动态数据将在使用此模板的所有页面上可用

_layout.cshtml模板中的动态数据将在使用此模板的所有页面上可用
EN

Stack Overflow用户
提问于 2018-08-21 04:34:56
回答 1查看 492关注 0票数 1

首先我要澄清的是,我不是直接使用MVC,而是Razor Pages。

我正在考虑在_Layout.cshtml模板中获取动态数据(数据库)的最佳方法,以便它们在所有页面上都可用:

1)我的第一个选择是创建一个PartialView,让我们称它为_Header.cshtml,包含以下测试内容:

代码语言:javascript
复制
   @page
    @model _HeaderModel
    <div id = "header">
        @ Model.HeaderMessage
    </ div>

在_Layout.cshtml模板中使用:

代码语言:javascript
复制
@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使用。

任何好的建议都是受欢迎的。

EN

回答 1

Stack Overflow用户

发布于 2018-08-21 05:11:01

我不知道这是否是Visual Studio的错误,即使我显式地添加了一个页面,Visual Studio在PartialView中包含了@ PartialView,这就是导致错误的原因。

_Header.cshtml

@page //已删除

代码语言:javascript
复制
         @model _HeaderModel

         <div id="header">
             @Model.HeaderMessage
         </div>

现在它可以工作了

_Layout.cshtml

代码语言:javascript
复制
@await Html.PartialAsync ("_ Header", new _HeaderModel ())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51938148

复制
相关文章

相似问题

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