2012-07-22 52 views
3

我想使用asp.net MVC 3剃须刀的HTML帮助下面的HTML代码:通数据图标剃刀HTML辅助属性

<input type="text" .... . placeholder="Login" data-icon="user" /> 

我试试这个:

@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", data-icon = "user" }) 

@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", @data-icon = "user" }) 

显示错误:

Invalid anonymous type members declaration. 

这可能是由于数据图标中的短划线不作为属性。我怎样才能在文本框字段中添加数据图标属性。

回答

10

是的,你不能这样写,但你可以编写自己的扩展来解决这个问题。下面是示例代码:

public static MvcHtmlString MyInput(this HtmlHelper htmlHelper, string name, string value, string icon) 
    { 
     var attrs = new Dictionary<string,object>(); 
     attrs.Add("data-icon", icon); 
     return htmlHelper.TextBox(name, name, value, attrs); 
    } 

或者你也可以在剃须刀使用这样的:

@{ 
    var attrs = new Dictionary<string, object>(); 
    attrs.Add("placeholder","Login"); 
    attrs.Add("data-icon","user"); 
} 
@Html.TextBoxFor(m => m.UserName, attrs) 

PLZ不要忘记,以纪念它是正确的答案,如果它可以帮助你:-)

+0

非常感谢我在谷歌搜索很长时间找不到。最后我得到了它。非常感谢你是生命的救星 – CodeManiac 2012-07-23 05:32:04

4

这是真的一样vNext的第二选择,但如果你喜欢把它写在行:

@Html.TextBoxFor(m => m.UserName, new Dictionary<string, object> { { "placeholder", "Login" }, { "data-icon", "user" } }) 
14

试试这个

@Html.TextBoxFor(m => m.UserName, new { placeholder = "Login", data_icon = "user" }) 
+2

这个。这对我来说并不是显而易见的,但经过一些测试后,下划线变成了破折号。在我的情况下,data_placeholder被转换为数据占位符。 Un(der)记录功能FTW! – JasonCoder 2013-08-05 13:49:56

+0

对我而言,这似乎是有意和正确的解决方案。非常感谢。 – 2016-02-15 07:05:57