C# asp.net mvc问题在IValidatableObject方法中的验证
我正在asp.net mvc-5中创建一个web应用程序 我正在使用IValidatableObject接口进行验证 这是我的模特的样子C# asp.net mvc问题在IValidatableObject方法中的验证,c#,validation,asp.net-mvc-5,validationsummary,ivalidatableobject,C#,Validation,Asp.net Mvc 5,Validationsummary,Ivalidatableobject,我正在asp.net mvc-5中创建一个web应用程序 我正在使用IValidatableObject接口进行验证 这是我的模特的样子 public class LicenseInfo : IValidatableObject { public int LicenseId { get; set; } //other properties public IEnumerable<ValidationResult> Validate(ValidationCont
public class LicenseInfo : IValidatableObject
{
public int LicenseId { get; set; }
//other properties
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
//Validate class which will be called on submit
}
}
当my
LicenseId=0
时,我的验证不起作用,控制器上的调试器直接执行,但当myLicenseId>0
时,我的验证方法正在执行。您需要在控制器方法中手动添加验证
[HttpPost]
public ActionResult _AddEditLicense(LicenseInfo data)
{
if (ModelState.IsValid)
{
// Execute code
}
// Not validated, return to the view
return View(data);
}
编辑
嗯,0是int的有效值,即使它不代表下拉列表中的任何内容。
尝试将其更改为int?,那么默认值将为null,并且应该更容易在模型验证中捕获它。我实际上在我的控制器方法中添加了ModelState.IsValid,主要的混淆是,只有当
LicenseId=0
时,它才起作用,在其他情况下,验证函数执行请参见我的编辑。另外,你应该向我们展示你的验证方法是什么样的。
[HttpPost]
public ActionResult _AddEditLicense(LicenseInfo data)
{
if (ModelState.IsValid)
{
//execution
}
}
[HttpPost]
public ActionResult _AddEditLicense(LicenseInfo data)
{
if (ModelState.IsValid)
{
// Execute code
}
// Not validated, return to the view
return View(data);
}