gpt4 book ai didi

c# - ModelState.IsValid=true 是否保证传递的模型参数不为空?

转载 作者:行者123 更新时间:2023-12-03 04:53:08 27 4
gpt4 key购买 nike

假设我们有由 HttpPost 归因的 CreateEdit 操作方法,并且它们有一个 model类型的参数,例如BlogViewModel如下。

[HttpPost]
public IActionResult Create(..., BlogViewModel model)
{
....
}

[HttpPost]
public IActionResult Edit(..., BlogViewModel model)
{
....
}

在他们的体内,我们通常进行如下验证。

if(ModelState.IsValid)
{
// do something
}

这里,做某事可以是访问模型属性的操作。

问题

我不确定是否有可能model变成null。如果 modelnull,则执行某些操作(例如访问 model 的属性)将引发异常。

我读了很多例子(来自互联网和教科书),我还没有看到有人做如下双重检查。

if(model!=null)
{
if(ModelState.IsValid)
{
// do something
}
}

if(ModelState.IsValid)
{
if(model!=null)
{
// do something
}
}

条件 ModelState.IsValidtrue 可能保证 modelnull

我的假设正确吗?恐怕我正在做一个定时炸弹的假设。

最佳答案

要回答您的问题,不,ModelState.IsValid 不会检查您的模型是否为空,如果发生这种情况,将会抛出错误。

在 API 中,如果您在构建请求模型时犯了错误并且它与端点期望的不匹配,则很容易出现空模型。

或者其他人可能会查看您的网站,查看 API 调用,并决定找点乐子,并用没有有效模型的请求淹没您的 API。

有多种方法可以在一个地方检查空模型,例如:ModelState is valid with null model

关于c# - ModelState.IsValid=true 是否保证传递的模型参数不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46560452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com