ASP.NET MVC可以使用HTML帮助程序生成HTML元素,例如@Html.ActionLink()
,@Html.BeginForm()
等等。
我知道我可以通过创建anonymous object来指定表单属性,并为该对象传递(在本例中为第四个)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"}
但它们也不起作用underscores get replaced by dashes。
我知道我也可以手工编写HTML元素或将表单包装在<div class="myClass">
中,但我仍然有兴趣知道它应该如何完成。
答案 0 :(得分:348)
为了使用在C#中具有reserved keyword作为名称的属性创建匿名类型(或任何类型),您可以在属性名称前添加一个at符号@
:< / p>
Html.BeginForm("Foo", "Bar", FormMethod.Post, new { @class = "myclass"})
对于使用点.
完成的VB.NET this syntax would be,该语言是all anonymous types的默认语法:
Html.BeginForm("Foo", "Bar", FormMethod.Post, new with { .class = "myclass" })
答案 1 :(得分:3)
目前CSS开发的最佳实践是创建更多通用选择器,其中包含可在整个网站中尽可能广泛应用的修饰符。我会尽量避免为单个页面元素定义单独的样式。
如果<form/>
元素上的CSS类的目的是控制表单中元素的样式,则可以添加类属性,即默认情况下封装任何表单的现有<fieldset/>
元素。 ASP.NET MVC生成的网页。很少需要表单上的CSS类。