提问人:David K 提问时间:8/3/2023 最后编辑:David K 更新时间:8/3/2023 访问量:51
ASP.NET Core MVC:asp-for 标记 Null 属性行为 - VS2017 与 VS2022
ASP.NET Core MVC: asp-for Tag Null Property Behavior - VS2017 vs VS2022
问:
我在 2019 年使用 Visual Studio 2017 创建了一个使用 ASP.NET Core MVC 2.0 的 Web 应用。我现在正在尝试更新它,现在我也安装了 Visual Studio 2022,所以我正在尝试使用 VS2022 来更新它。不过,我遇到了一个非常具体的问题:当视图包含带有 asp-for 帮助程序标记的输入时,该标记引用模型属性的属性,该属性是我创建的类的实例化,并且该模型属性为 null,它在 VS2022 中给了我一个 NullReferenceException,但在 VS2017 中没有。作为一个简化的示例,下面是视图的模型类:
public class Page
{
public int CurrentPage { get; set; }
public int TotalPages { get; set; }
public Category Category { get; set; }
}
下面是 Category 类:
public class Category
{
public byte ID { get; set; }
public string CategoryDesc { get; set; }
}
最后,这里是视图(导致错误的输入标记是包含引用 Category.ID 的 asp-for 属性的行)
@model Page
<html>
<body>
<form asp-action="Navigate" method="get">
<input name="newPage" />
<input asp-for="Category.ID" />
<button type="submit">Go to Page</button>
</form>
</body>
</html>
但是,Category 可能为 null。在 VS2017 中,在生成的 html 中,这只会导致该输入显示属性 'value=“”'。但是,在 VS2022 中,它给出了 NullReferenceException。有谁知道为什么会这样?我不能永远使用 VS2017 来更新这个网站(尽管它在 Core 2.0 上,当然,这是完全不同的对话)。当然,我知道为什么会发生这种情况(因为 Category 为 null),因此我可以考虑在必要时采取措施来调整这种新行为,但我宁愿不要对我们已经成功使用多年的复杂应用程序进行任何不必要的更改,除非我真的必须这样做。感谢您的帮助!
答: 暂无答案
评论