如何将一个类属性添加到由MVC的HTML助手生成的HTML元素?

ASP.NET MVC可以使用HTML Helpers生成HTML元素,例如@Html.ActionLink()@Html.BeginForm()等等。

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

 Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"}) 

但是class属性呢? 显然这不起作用:

 Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"}) 

因为这只是在请求我的视图时抛出随机的语法错误,因为在遇到C#关键字class之后,它会遇到其他问题。

我也试过:

 new { _class = "myclass"} 

 new { class_ = "myclass"} 

但他们也没有工作,因为下划线被破折号取代 。

我知道我也可以手动编写HTML元素,或者将表单封装在<div class="myClass"> ,但是我仍然有兴趣知道应该如何完成。

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

 Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"}) 

对于VB.NET来说, 这个语法可以使用点来实现. ,该语言是所有匿名types的默认语法:

 Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" }) 

目前在CSS开发中的最佳实践是创build更多的通用select器,其中可以在整个网站中尽可能广泛地应用修饰符。 我会尽量避免为单个页面元素定义单独的样式。

如果<form/>元素上的CSS类的目的是为了控制表单中元素的样式,可以添加class属性,现有的<fieldset/>元素默认封装在ASP生成的网页中.NET MVC。 窗体上的CSS类很less需要。