gpt4 book ai didi

asp.net MVC ModelState.IsValid 返回 false

转载 作者:行者123 更新时间:2023-12-04 16:35:54 41 4
gpt4 key购买 nike

我在 ASP.NET MVC 应用程序中工作。我有一个 View 模型如下:

public class SampleInterestViewModel
{
//Properties defined
//One such property that shows an error in ModelState is as follows
public DateTime? SampleDate { get; set; }
}

从 UI Perspective 用户可以输入日期作为 mmddyyyy。当用户以这种格式输入时说01012001,我在 Controller 中的 ModelState.IsValid 代码片段返回 false。当我快速查看 ModelState 时,我看到属性“SampleDate”的错误,提示“值 01012001 对 SampleDate 无效”。

在我的模型绑定(bind)器中,在 OnModelUpdated 事件期间,我尝试将值 01012001 格式化为 01/01/2001 并将其分配回 SampleInterestViewModel.SampleDate,认为 ModelState.IsValid 可能会返回 true 而不会出现该错误。但是 ModelState.IsValid 仍然是假的,当我查看 ModelState 字典时,这个特定的属性在它的集合中仍然有错误。

最后,我尝试格式化 01012001 并将值 01/01/2001 直接更新为 ModelState 字典中的 Property SampleDate。但 ModelState.IsValid 仍然是 false,显示 SampleDate 属性的相同错误。无法弄清楚为什么 ModelState.IsValid 有效以及它如何以及何时设置为 false。

如果用户在 UI 中输入 01012001,我仍然需要在 modelbinder 中将其格式化为 01/01/2001 并确保 ModelState.IsValid 为真,以便我的其余 Controller 代码可以按预期工作。在 UI 中,我正在执行 AjaxSubmit 以发布 sampleDate 值。

任何想法或评论。

最佳答案

我可以看到一些解决方案:

  1. 在模型绑定(bind)器中修复格式后,您可以使用 ModelState["SampleDate"].Errors.Clear(); 清除 ModelState 错误。
  2. 使用 JavaScript 验证输入以强制用户输入正确的格式。
  3. 在表单发布之前使用 JavaScript 为用户更改格式。

我认为 1 和 2 的组合是您最好的选择。

关于asp.net MVC ModelState.IsValid 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883630/

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