如何将类属性添加到MVC的HTML Helpers生成的HTML元素中?

Adr*_*ore 187 asp.net-mvc html-helper razor

例如@Html.ActionLink(),ASP.NET MVC可以使用HTML Helpers生成HTML元素,@Html.BeginForm()依此类推.

我知道我可以通过创建一个匿名对象来指定表单属性,并将该对象传递给(在本例中为第四个)htmlAttributes参数,其中id为元素指定一个:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
Run Code Online (Sandbox Code Playgroud)

class属性怎么样?显然这不起作用:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
Run Code Online (Sandbox Code Playgroud)

因为在请求我的视图时,它只会抛出随机语法错误,因为它在遇到C#关键字后需要其他东西class.

我也尝试过:

new { _class = "myclass"}
Run Code Online (Sandbox Code Playgroud)

new { class_ = "myclass"}
Run Code Online (Sandbox Code Playgroud)

但它们也没有用,因为下划线被短划线取代.

我知道我也可以手工编写HTML元素或将表单包装在一个内部<div class="myClass">,但我仍然有兴趣知道它应该如何完成.

小智 349

为了创建一个匿名类型(或任何类型),其属性在C#中具有保留关键字作为其名称,您可以在属性名称前添加一个at符号,@:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
Run Code Online (Sandbox Code Playgroud)

对于VB.NET,这种语法将使用dot 完成.,在该语言中,dot 是所有匿名类型的默认语法:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
Run Code Online (Sandbox Code Playgroud)