我有一个非常基本的实体模型,我正在尝试添加自定义验证消息。
我的元数据如下所示:
namespace My.Models {
[MetadataType(typeof(My.Models.ConsumerMetadata))]
public partial class Consumer
{
}
public class ConsumerMetadata
{
[StringLength(5)]
[Required(ErrorMessage="First name is an absolute must!")]
public string FirstName { get; set; }
} }
问题是我添加的数据注释没有传播到视图错误 - 这些仍然是默认错误。
我确信这里有一些简单的东西我在这里...
答案 0 :(得分:1)
您是否在页面中添加了Html.ValidationSummary()?
答案 1 :(得分:0)
您的观点是什么样的? 您必须确保输入具有正确的ID
在MVC1中你必须写
<%= Html.TextBox("data.FirstName") %>
<%= Html.ValidationMessage("data.FirstName") %>
在MVC2中,它更容易,特别是如果你有一个强大的类型视图ViewPage<Consumer>
<%= Html.TextBoxFor(model => model.FirstName) %>
<%= Html.ValidationMessageFor(model => model.FirstName) %>
您的控制器操作:
public ActionResult AddConsumer(Consumer data)
{
if (!this.ModelState.IsValid)
{ ... }
...
}
在MVC2中,验证将在您执行此操作之前进行。因此,您只需检查ModelState.IsValid
即可。但是在MVC中,这是编写验证对象的自定义动作过滤器的最佳方式。他们你必须用过滤器属性装饰你的动作并瞧。您的对象将得到验证,您可以采取相应的行动。