我正在尝试实现对数据类型的限制。我已经使用DataAnnotations,但对于数据类型,它不显示自定义消息asp.net mvc 3验证数据类型
例如,当我试图输入字符串数据到int类型字段。在这种情况下,我如何定制消息?
我正在尝试实现对数据类型的限制。我已经使用DataAnnotations,但对于数据类型,它不显示自定义消息asp.net mvc 3验证数据类型
例如,当我试图输入字符串数据到int类型字段。在这种情况下,我如何定制消息?
如果我不得不猜测,您听起来像是在验证模型中的一个或多个字段时要显示自定义消息。你也可以继承的DataAnnotations.ValidationAttribute
类并重写IsValid(object)
方法,最后设置自定义ErrorMessage
值(其中ErrorMessage
已经属于ValidationAttribute
类)
public class SuperDuperValidator : ValidationAttribute
{
public override bool IsValid(object value)
{
bool valid = false;
// do your validation logic here
return valid;
}
}
最后,装饰与属性
public class MyClass
{
[SuperDuperValidator(ErrorMessage="Something is wrong with MyInt")]
public int MyInt { get; set; }
}
你的模型属性
如果您使用开箱即用的MVC3,则应该只需要对模型进行属性验证(尽管您的模型可能会有所不同/具有更多属性等)。因此,在您的[HttpPost]
控制器操作中,MVC将会自动绑定MyClass
,您将能够使用ModelState.IsValid
来确定发布的数据实际上是否有效。
喜欢验证器名称:) lmao – IamStalker 2011-07-06 08:56:27
Pavel,
DataAnnotations DataType属性不影响验证。它用来决定你的输入是如何呈现的。在这种情况下,David的解决方案在上面起作用。
然而,如果你希望只使用内置的验证属性,您可能需要使用这样的范围属性:
[Range(0, 10, ErrorMessage="Please enter a number between 0 and 10")]
public int MyInt { get ; set ;}
(当然,你真正应该使用ErrorMessageResourceName /类型参数,并提取出硬编码错误消息字符串到RESX文件)
确保让MVC知道哪里来呈现你的错误信息:
<%= Html.ValidationMessageFor(m => m.MyInt) %>
或者您可以使用EditorForModel,它会正确设置它。
我不认为这已被回答,因为我有同样的问题。
如果您有一个具有int类型属性的模型,并且用户键入了一个“asd”字符串,那么MVC3框架绑定/验证步骤将导致您的视图显示"The value 'asd' is not valid for <model property name or DisplayName here>"
。
对我来说,海报是要求这个消息,MVC3框架输出定制? 我也想知道。虽然该消息是不是太糟糕,如果你标记你的领域的东西,很容易表示数量预计可能仍然需要包括其他的原因所以说像:
"The value 'asd' is not valid for <fieldname>; must be a positive whole number."
让用户没有进入值之后的值以及每次获取不同的错误消息。
请显示您的模型类和您的视图 – hunter 2011-05-20 17:41:03