我正在创建一个部分视图作为 Index.cshtml 的一部分。
我遵循 Microsoft 文章中概述的基础知识 =>https://learn.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-2.1 https://learn.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-2.1
我的总结是:
将一个跨度添加到我的 Index.cshtml 文件中,该文件实际上是从 Razor 页面加载 HTML 的。
Index.cshtml 中的相关 HTML 如下所示:
<span id="basicView">
@{
Model.UserName = "IndexUser";
await Html.RenderPartialAsync("BasicPartial", Model);
}
</span>
我已将公共属性添加到 RazorPage 中名为 UserName 的 IndexModel,如下所示:
namespace FirstCore.Pages
{
public class IndexModel : PageModel
{
public string UserName;
public void OnGet()
{
}
}
}
本示例保持非常简单。
因此,在 Index.cshtml 的 HTML 中,您可以看到我将该公共属性的值设置为“IndexUser”,然后将 Razor 页面的名称(“BasicPartial”- 视图)和模型对象传递给 BasicaPartial剃刀页面。
BasicPartial 页面非常简单 - 是从 Visual Studio 2017 模板生成的 - Add...Razor Page... 整个内容如下所示:
@page
@model IndexModel
@*
For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@
<div>This is the text and the user name is @(Model.UserName).</div>
实际上,唯一重要的部分是我从传入的模型中读取 UserName 的属性值的地方。
您可以看到我还在顶部将 @model 定义为 IndexModel。
主要问题 - 模型始终为空
当我运行这个非常简单的例子时。应用程序告诉我模型对象为空。
您可能认为 UserName 为空,但如果我在顶部放置一个非常简单的指令,例如
<div>@Model</div>
然后它告诉我 Model 为空,即使我知道我正在传递它。
你知道为什么它是空的吗?