假設我們有Create
和Edit
動作方法歸於HttpPost
並且它們具有model
類型的參數,例如BlogViewModel
,如下所示。ModelState.IsValid = true是否保證傳遞的模型參數不爲null?
[HttpPost]
public IActionResult Create(..., BlogViewModel model)
{
....
}
[HttpPost]
public IActionResult Edit(..., BlogViewModel model)
{
....
}
在他們的身體裏,我們通常會做如下驗證。
if(ModelState.IsValid)
{
// do something
}
在這裏,do something
可以訪問model
的性質的操作。
問題
我不知道是否有在這model
成爲null
的可能性。如果model
是null
然後do something
(諸如訪問的model
一個屬性)將拋出異常。
我讀了很多的例子(從互聯網和教科書),我還沒有看到有人這樣做仔細檢查尚未如下。
if(model!=null)
{
if(ModelState.IsValid)
{
// do something
}
}
或
if(ModelState.IsValid)
{
if(model!=null)
{
// do something
}
}
也許,條件ModelState.IsValid
是true
保證model
不null
。
我的假設是否正確?恐怕我正在做一個定時炸彈的假設。
該模型將只'null'如果有與您其他錯誤代碼 –
@StephenMuecke:所以有必要總是做仔細檢查所示我上面的代碼?或'ModelState.IsValid = true'不能保證'model!= null'? –
無論如何,檢查'null'通常是個好主意。假設它不應該是'null',一切進展順利,但重構或其他錯誤配置(例如路由)可能會導致它爲空。 – DiskJunky