首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用实体Framework+MVC的数据标注

使用实体Framework+MVC的数据标注
EN

Stack Overflow用户
提问于 2010-02-26 05:07:56
回答 2查看 1.8K关注 0票数 2

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

我的元数据如下所示:

代码语言:javascript
复制
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; }
} }

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

我确信我在这里错过了一些简单的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-26 06:37:44

您是否在页面中添加了Html.ValidationSummary()?

票数 1
EN

Stack Overflow用户

发布于 2010-02-26 22:47:17

您的视图是什么样子的?您必须确保您的输入具有正确的ids

在MVC1中,您必须编写

代码语言:javascript
复制
<%= Html.TextBox("data.FirstName") %>
<%= Html.ValidationMessage("data.FirstName") %>

在MVC2中,这甚至更简单,特别是当您有一个强类型视图ViewPage<Consumer>

代码语言:javascript
复制
<%= Html.TextBoxFor(model => model.FirstName) %>
<%= Html.ValidationMessageFor(model => model.FirstName) %>

您的控制器操作:

代码语言:javascript
复制
public ActionResult AddConsumer(Consumer data)
{
    if (!this.ModelState.IsValid)
    { ... }
    ...
}

在MVC2中,验证将在执行进入此操作之前进行。因此,您将能够简单地检查ModelState.IsValid。但在MVC中,这是编写自定义操作过滤器来验证对象的最佳方式。你必须用过滤器属性来装饰你的动作。您的对象将得到验证,您可以相应地执行相应的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2337628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档