gpt4 book ai didi

asp.net-mvc - ModelState.IsValid 在 NerdDinner 的 ASP.NET MVC 中有效吗?

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

关于NerdDinner Professional ASP.NET MVC 1.0 的示例有一种创建新晚餐的方法,如下所示(免费 NerdDinner 版本的第 89 页)。

它检查 ModelState.IsValid 是否为 true。它似乎检查模型对于数据库是否有效(也就是说,它捕获数据类型转换,例如格式无效的日期,但不捕获业务规则)。这是真的吗?

提交表单时,如果日期有误,ModelState.IsValid 将为 false,并且您将收到错误,但仅限于日期,因为 AddRuleViolations 从未执行过。如果完全删除对 ModelState.IsValid 的检查,那么您将收到所有错误(由于异常),包括无效日期中的标记。那么,为什么要检查 ModelState.IsValid 呢?我错过了什么吗?

// 
// POST: /Dinners/Create

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner) {
if (ModelState.IsValid) {
try {
dinner.HostedBy = "SomeUser";

dinnerRepository.Add(dinner);
dinnerRepository.Save();

return RedirectToAction("Details", new {id = dinner.DinnerID });
} catch {
ModelState.AddRuleViolations(dinner.GetRuleViolations());
}
}
return View(dinner);
}

最佳答案

ModelState.IsValid 告诉您是否有任何模型错误已添加到 ModelState

默认模型绑定(bind)器将为基本类型转换问题添加一些错误(例如,为“int”传递非数字)。您可以根据您使用的任何验证系统更全面地填充 ModelState。

示例 DataAnnotations 模型绑定(bind)器将使用从模型上的 DataAnnotations 属性获取的验证错误来填充模型状态。

关于asp.net-mvc - ModelState.IsValid 在 NerdDinner 的 ASP.NET MVC 中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/881281/

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