Asp .net Core:如何在Razor Pages的Partial View中使用模型?

时间:2019-07-27 04:51:59

标签: c# .net-core razor-pages

无法在模型中使用部分视图。

我创建了一个名为WebApplication1的新WebApplication。

我已经在共享文件夹中创建了一个名为TestPartialView的局部视图。

TestPartialView.cshtml.cs文件中,我创建了一个名为GetMyString()的方法,该方法返回一个字符串。

我正在@Model.GetMyString()文件中使用TestPartialView.cshtml

我在<partial name="TestPartialView" />下面的_Layout页面内包含了<partial name="_CookieConsentPartial" />标签

建造时没有错误。

但是当我运行它时,它给出了一个错误:

  

InvalidOperationException:传递到ViewDataDictionary的模型项的类型为'WebApplication1.Pages.IndexModel',但是此ViewDataDictionary实例需要类型为'WebApplication1.Pages.Shared.TestPartialViewModel'的模型项。”

TestPartialView.cshtml

TestPartialView.cshtml.cs

_Layout.cshtml

2 个答案:

答案 0 :(得分:1)

您似乎已尝试搭建一个新的Razor Page用作新的局部视图。

部分视图没有关联的PageModel类(.cshtml.cs)。局部视图只是以Razor标记(.cshtml)创建的视图。

请参考以下示例:Strongly Typed Partials。它简洁地显示了Razor Page将数据作为模型传递给partial view进行渲染。

您还可以随时在ASP.NET Core Docs

上找到更多信息。

答案 1 :(得分:0)

您的局部视图期望使用ModelPartialViewModel类型的模型,但是您未指定从_layout.cshtml引用局部视图时的模型,因此默认情况下该页面会将Parent ViewModel发送到局部视图,这会导致您遇到错误

要修复

仅从_layout.cshtml引用您的局部视图,并通过如下所示的预期模型

@await Html.PartialAsync("~/Views/Shared/PartialViews/TestPartialView.cshtml", 
              new TestPartialViewModel())