2011-03-10 101 views
1

如何将html属性(如maxlength,style,css和...)添加到Html.EditorFor()?编辑器的html属性

+0

可能重复http://stackoverflow.com/questions/3735400/html-attributes -for-editorfor-in-asp-net-mvc) – 2011-03-10 11:31:06

回答

4

这是很晚了,但也许别人会觉得这有帮助。

为什么走很长的路?我想我们正在处理一个字符串,因为你想添加一个maxlength属性。然后你可以使用Html.TextBoxFor而不是Html.Editorfor。

TextBoxFor接受html属性。

@Html.TextBoxFor(model => model.Name, new{ maxlength = 50 }) 
+0

虽然你特别需要处理编辑器模板,但这并没有帮助。例如,如果您有一个Decimals模板,其格式必须专门处理,并且标准TextBoxFor不会执行此操作。 – Jacques 2014-08-25 06:45:32

0

我一直在用同样的问题今天摔跤,因为我不能改变我的模型(不是我的代码),我不得不拿出处理这更好的方式。这有点暴躁,但它应该适用于我可能遇到的99%的情况。

在我Boolean.cshtml编辑模板:

@model bool? 

@{ 
    var attribs = new Dictionary<string, object>(); 
    var validAttribs = new string[] {"style", "class", "checked", "@class", 
     "classname","id", "required", "value", "disabled", "readonly", 
     "accesskey", "lang", "tabindex", "title", "onblur", "onfocus", 
     "onclick", "onchange", "ondblclick", "onmousedown", "onmousemove", 
     "onmouseout", "onmouseover", "onmouseup", "onselect"}; 

    foreach (var item in ViewData) 
    { 
     if (item.Key.ToLower().IndexOf("data_") == 0) 
     { 
      attribs.Add(item.Key.Replace('_', '-'), item.Value); 
     } 
     else 
     { 
      if (validAttribs.Contains(item.Key.ToLower())) 
      { 
       attribs.Add(item.Key, item.Value); 
      } 
     } 
    } 
} 

@Html.CheckBox("", Model.GetValueOrDefault(), attribs) 
的[HTML属性EditorFor()在ASP.NET MVC(