使用实体框架+ MVC的数据注释

时间:2010-02-25 21:07:56

标签: asp.net-mvc entity-framework

我有一个非常基本的实体模型,我正在尝试添加自定义验证消息。

我的元数据如下所示:

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; }
} }

问题是我添加的数据注释没有传播到视图错误 - 这些仍然是默认错误。

我确信这里有一些简单的东西我在这里...

2 个答案:

答案 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中,这是编写验证对象的自定义动作过滤器的最佳方式。他们你必须用过滤器属性装饰你的动作并瞧。您的对象将得到验证,您可以采取相应的行动。