189

ASP.NET MVC 可以使用 HTML Helpers 生成 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"}

但它们也不起作用,因为下划线被 dashes 取代

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

4

2 回答 2

351

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

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

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

Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
于 2009-05-18T19:09:36.993 回答
2

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

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

于 2009-06-23T09:52:44.667 回答