c# - EditorFor 和 StringLength DataAnnotations

标签 c# asp.net asp.net-mvc data-annotations

我的模型有以下属性

        [Display(Name = "MyProperty")]
        [StringLength(10)]
        public string MyProperty
        {
            get;set;
        }

和下面的EditorFor模板

<%@ Page Language="C#" MasterPageFile="Template.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Data" runat="server">
    <%= Html.TextBox("", Model)%>
</asp:Content>

我遇到的问题是 StringLength 属性(可以理解)未设置为限制文本框大小。我的答案是我应该如何获取要在我的模板中设置的属性?

谢谢

最佳答案

如果您使用的是 ASP.NET MVC 3 或更高版本,则已接受的答案无效。您需要更改用于获取值的键:

IEnumerable<ModelValidator> validators = ModelValidatorProviders.Providers
    .GetValidators(ViewData.ModelMetadata, ViewContext);

ModelClientValidationRule rule = validators.SelectMany(v => 
    v.GetClientValidationRules()
).FirstOrDefault(m => m.ValidationType == "length");

if (rule != null && rule.ValidationParameters.ContainsKey("max")) {
    var maxLength = rule.ValidationParameters["max"];
}

关于c# - EditorFor 和 StringLength DataAnnotations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7076953/

相关文章:

c# - 使用多个监视器恢复窗口大小/位置

c# - 字符解析换行符 (C#)

asp.net - 我可以使用 JQuery 从 web.config 读取数据吗?

javascript - 将 JSTree 节点拖到外部 div 中

asp.net-mvc - MVC 路由中 Controller 的类别? (不同命名空间中的重复 Controller 名称)

asp.net-mvc - 在 ASP.net MVC 单元测试中访问 ModelState 错误字典中的错误消息

c# - LINQ 方法的序列有什么重要性吗?

c# - 在字符串输出中允许 html 代码

asp.net-mvc - 使用 MVC Futures 的异步 Controller 在 .NET 3.5 SP1 中的 ASP.NET MVC 1 中长轮询的服务器和连接限制

c# - 复杂查询的 Linq 内连接