HttpPost
によって帰属されるおよびEdit
のアクションメソッドがあり、タイプが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
の場合、(たとえば、model
のプロパティにアクセスするなど)は例外をスローします。
私は多くの例を(インターネットと教科書から)読みましたが、次のように二重チェックをしている人はまだいません。
if(model!=null)
{
if(ModelState.IsValid)
{
// do something
}
}
または
if(ModelState.IsValid)
{
if(model!=null)
{
// do something
}
}
おそらく、条件ModelState.IsValid
はmodel
がnull
ではないことを保証true
です。
私の前提は正しいですか?私は時限の前提をしているのではないかと心配しています。
あなたは –
@StephenMueckeコードで他のエラーがある場合、モデルが唯一 'null'なので次のようになります。だから、それは上記の私のコードに示すように、常にダブルチェックを行う必要があるが、 ?あるいは 'ModelState.IsValid = true'は' model!= null'を保証しませんか? –
とにかく「ヌル」をチェックすることは、一般的には良い考えです。偽的に、それは「ヌル」であってはならず、すべてうまくいっているが、リファクタリングまたは他の誤った構成(例えば、ルーティング)は「ヌル」になる可能性がある。 – DiskJunky