如何解决使用自动实现的属性时 C# 空引用异常 代码背景:问题:
代码背景:
我在 Asp.Net Core 中有一个模型类,如下所示:
INSERT INTO payment (Id_student,Class,Status)
SELECT Id_student,"not_complete" AS Status
FROM student
WHERE Class = "A";
现在,如果在 namespace urlShortner.Models
{
public class urlData
{
public string longUrl {get; set;}
public string shortUrl {get; set;}
public int hitTimes {get; set;} = 0;
public string creationTimeStamp {get; set;}
}
}
类中使用 Auto-Implemented 属性直接存储 viewmodel
就可以了,如下:
剃刀页面:
POST request fields
视图模型:
<input asp-for="urlDataObj.longUrl">
.
.
.
<p style="color: white;">
@ViewData["lo"]
</p>
如上所示,我有一个 Auto-Implemented 属性,它由 [BindProperty]
public urlShortner.Models.urlData urlDataObj {get; set;}
public void OnPost()
{
ViewData["lo"] = urlDataObj.longUrl;
}
属性和 [BindProperty]
POST 数据直接装饰到其中一个字段,比它晚使用 Razor Page
在 page
上可见。
我试图避免这种情况,因为这是一个安全问题,用户可以轻松地将 ViewData
上的 form
操作为另一个字段的 page
数据.
我更改了以下代码:
Razor 页面(已更改):
POST
viewmodel(已更改):
<input asp-for="longUrl">
.
.
.
<p style="color: white;">
@ViewData["lo"]
</p>
现在,如果我使用 [BindProperty]
public string longUrl {get; set;}
public urlShortner.Models.urlData urlDataObj {get; set;}
public void OnPost()
{
ViewData["lo"] = longUrl; // POST data is OK!
urlDataObj.longUrl = longUrl; // Null reference exception will occurs!
}
类型的 Object
而不是像这样的自动实现属性:
urlShortner.Models.urlData
问题就解决了!
问题:
我可以简单地认为这个自动实现的属性有时会在程序编译后创建烘焙场,但不知道何时、如何等
另外,为什么用 public urlShortner.Models.urlData urlDataObj = new urlShortner.Models.urlData();
数据填充属性可以,但用变量赋值不行?
请解释清楚(生命周期)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。