无法在模型中使用部分视图。
我创建了一个名为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'的模型项。”
答案 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())