Asp.net mvc 3 在ViewModel上应用验证属性时未获得验证错误
我有一个视图模型Asp.net mvc 3 在ViewModel上应用验证属性时未获得验证错误,asp.net-mvc-3,custom-attributes,customvalidator,Asp.net Mvc 3,Custom Attributes,Customvalidator,我有一个视图模型 [CustomValidation(typeof(MyValidation), "MyMethod")] [Serializable()] public class TransactionViewModel { public string InvoiceNumber; } public class MyValidation { public static ValidationResult validatelength(T
[CustomValidation(typeof(MyValidation), "MyMethod")]
[Serializable()]
public class TransactionViewModel
{
public string InvoiceNumber;
}
public class MyValidation
{
public static ValidationResult validatelength(TransactionViewModel length)
{
bool isValid;
if (length.InvoiceNumber.Length >15)
isValid = false;
else
isValid = true;
if (isValid)
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(
"The Field value is greater than 15");
}
}
}
现在我正在检查我的类对象的一些字段,如果验证失败,我正在检查控制器中的模型状态并返回视图,添加了发票号的验证消息,但仍然没有得到错误
我们能否将验证属性应用于模型视图,如果我做错了什么,请提供解决方案使用
<%= this.Html.ValidationSummary() %>
你会得到你想要的
如果您的modelstate无效,您将得到要查找的错误
您的问题是您的错误是您的错误与该类的任何成员都没有关联。在modelstate中,它有键“”,因为它与任何字段都没有关联。也许您忘记在视图中放置validationsummary了
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
错误消息将如您所料出现在中。我正在视图上使用验证摘要,一切正常,模型没有更新,但我没有收到验证消息,我得到的视图是正确的。可能您正在以不同的方式处理它。您是否正在使用ModelState.AddModelError(字符串键、字符串错误消息)?另外,请看我的回答中的一些额外信息。+1,你是如何解决的?即,确保IsValid与验证字段相关联?我是不是错过了一个构造器?我真的不明白你的意思。如果要验证字段,请使用ModelState.IsValidField(“字段”),我只是好奇为什么
@this.Html.ValidationSummary()
会显示一个模型错误,而as@Html.ValidationSummary()
不会?你是认真的还是讽刺的?this关键字是我在fxcop和stylecop中使用的一个老习惯。它强制在实例中使用它的原因是,它允许其他开发人员立即识别成员是静态的还是来自实例的。在视图中不使用它可能会引起争论,因为每个人都知道Html是实例成员。显然这两种方法都有效,因为它们是相同的。这与以前的问题不同。
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
ModelState.AddModelError(string.Empty, "There is something wrong with Foo.");