gpt4 book ai didi

asp.net-mvc-3 - ASP.MVC3 ModelState.IsValid 不包括 RemoteAttribute 检查

转载 作者:行者123 更新时间:2023-12-02 14:44:34 26 4
gpt4 key购买 nike

我将变量定义为

public class EditModel
{
[Remote("IsNameAvailable", "Home", ErrorMessage = "Name is in use.")]
[Display(Name = "Name")]
public string Name{ get; set; }
}

在主 Controller 中

public JsonResult IsNameAvailable(string name)
{
if (duplicate)
return Json(false, JsonRequestBehavior.AllowGet);
else
return Json(true, JsonRequestBehavior.AllowGet);
}

但是当我在“保存”操作中检查 ModelState.IsValid 时,即使我可以在 View 上看到错误消息显示,它也始终返回 true。

public ActionResult Save(EditModel editModel)
{
if (!ModelState.IsValid)
{
//Return to view and display error in view
return View("Home", editModel);
}

//Input data is valid and save record
Repository.Save(editModel.Name);
}

ModelState 如何检查模型中 RemoteAttribure 的验证规则?

最佳答案

你有两个选择。您可以实现 IDataErrorInfo 或 IValidatableObject 接口(interface)并在那里重做验证。这些接口(interface)由 MVC 开箱即用地支持,您的 ModelState 将反射(reflect)这一点。

您的另一个选择是创建您自己的从 RemoteAttribute 派生的属性。在此自定义属性中,添加用于在服务器端应用相同验证的逻辑。

最后一个选项是我想要的,但这确实花费了更多时间。 This question不过应该可以帮助你。

关于asp.net-mvc-3 - ASP.MVC3 ModelState.IsValid 不包括 RemoteAttribute 检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077469/

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