使用自动实现的属性时 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 Pagepage 上可见。
我试图避免这种情况,因为这是一个安全问题,用户可以轻松地将 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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...