Asp.net mvc “的类型”;HTMLAT贡品“;在TextBoxFor中,以及如何向其中添加更多属性

Asp.net mvc “的类型”;HTMLAT贡品“;在TextBoxFor中,以及如何向其中添加更多属性,asp.net-mvc,extension-methods,Asp.net Mvc,Extension Methods,我已经添加了一个扩展方法作为MVC视图的助手,并希望向它已有的任何属性添加另一个属性。这是标准TextBoxFor方法的签名(我的签名除外,我的名为“TextBoxForWithTitle”): 公共静态MvcHtmlString TextBoxFor( 这个HtmlHelper HtmlHelper, 表情表情, 对象属性 ) 最后一个参数htmlAttributes看起来像一个名称-值对。当我(在运行时)将鼠标悬停在它上面时,它的值是我在Razor视图中添加的“{class=emailte

我已经添加了一个扩展方法作为MVC视图的助手,并希望向它已有的任何属性添加另一个属性。这是标准TextBoxFor方法的签名(我的签名除外,我的名为“TextBoxForWithTitle”):

公共静态MvcHtmlString TextBoxFor( 这个HtmlHelper HtmlHelper, 表情表情, 对象属性 )
最后一个参数htmlAttributes看起来像一个名称-值对。当我(在运行时)将鼠标悬停在它上面时,它的值是我在Razor视图中添加的“{class=emailtextbox}”。如何在扩展方法中将另一个名称/值属性添加到此属性?我试着把它放到字典里,但没用。

它显示它是对象类型。如何初始化新对象<代码>新建{[properties go here]}。因此,我们要做的是:

@Html.TextBoxFor(x => x.SomeId, new { @class = "whatever-class", @id = 5, data_customAttr = "customAttribute"})

请注意,如果需要
数据-
属性,请使用
而不是
-
。它们将被转换。

您可以通过RouteValueDictionary访问它:

IDictionary<string, object> newAttributes = new RouteValueDictionary(htmlAttributes);
IDictionary newAttributes=新的RouteValueDictionary(htmlAttributes);
这允许您在代码中添加新项目:

newAttributes.Add(new KeyValuePair<string, object>("id", id));
添加(新的KeyValuePair(“id”,id));
newAttributes.Add(new KeyValuePair<string, object>("id", id));