如何将 class 属性添加到由 MVC 的 HTML 助手生成的 HTML 元素中?

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

我知道我可以通过创建一个 匿名对象来指定表单属性,然后将该对象传递给(本例中的第四个) 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">中,但是我仍然有兴趣知道应该如何完成。

137640 次浏览

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

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

对于 VB.NET 这个语法是,使用点 .完成,在该语言中,这是 < em > 所有 匿名类型的默认语法:

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

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

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