首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DisplayFormat数据批注不起作用

DisplayFormat数据批注不起作用
EN

Stack Overflow用户
提问于 2011-08-03 13:13:31
回答 2查看 5.6K关注 0票数 0

我的模型类中有以下dataannotation:

代码语言:javascript
复制
[Required(ErrorMessage = "Required")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime DateOfBirth { get; set; }

当我在我的视图中使用以下命令时,我没有得到验证错误:

代码语言:javascript
复制
 <tr>
        <td>@Html.LabelFor(x => x.DateOfBirth, new { @class = "lbl" }, "Date Of Birth") </td>
        <td>@Html.TextBoxFor(x => x.DateOfBirth, new { @class = "w100 _dob" })
        <br>@Html.ValidationMessageFor(x => x.DateOfBirth)
        </td>

</tr>

你能建议一下解决方案吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-03 23:30:17

DisplayFormat属性与验证无关。它仅用于格式化显示在视图上的值。如果要验证用户在相应输入字段中输入的值,则必须编写自定义模型绑定器。

顺便说一句,DisplayFormat属性与Html.EditorFor帮助器结合使用,它对您正在使用的Html.TextBoxFor帮助器没有任何影响:

代码语言:javascript
复制
<tr>
    <td>
        @Html.LabelFor(x => x.DateOfBirth, "Date Of Birth")
    </td>
    <td>
        @Html.EditorFor(x => x.DateOfBirth)
        <br/>
        @Html.ValidationMessageFor(x => x.DateOfBirth)
    </td>
</tr>
票数 4
EN

Stack Overflow用户

发布于 2011-08-03 23:28:21

LabelFor没有允许您设置CSS的重载,您可以设置lambda或Lambda和文本。

当我删除"new { @class = "lbl“}”部分并运行您的代码时,验证工作正常。

编辑:很抱歉,我最初的测试使用的是EditorFor,而我的机器文化设置为美国,所以它工作得很好。

您可以将webconfig中的全球化区域性设置为使用mm\dd\yyyy的正确区域性,例如。

代码语言:javascript
复制
<globalization culture="en-us" />

但这将影响整个网站(包括数字、日期、货币等的格式),所以如果这是一个有限的案例,那么这可能不是你问题的解决方案。

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

https://stackoverflow.com/questions/6921928

复制
相关文章

相似问题

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