我正在使用asp.net mvc并创建一个表单。我想在表单标记中添加一个class属性。
我找到了添加enctype属性的示例here,并尝试与类交换。访问视图时出现编译错误。
然后我找到了一个例子,有人在属性名称的开头添加@符号并且有效。伟大的它是有效的,但我是一个需要知道原因,快速的谷歌搜索没有帮助。我知道C#允许在字符串前加上@来忽略转义字符。为什么它在这种情况下有效? @告诉编译器什么?
产生编译错误的代码?
<% Html.BeginForm("Results", "Search",
FormMethod.Get, new{class="search_form"}); %>
有效的代码:
<% Html.BeginForm("Results", "Search",
FormMethod.Get, new{@class="search_form"}); %>
答案 0 :(得分:37)
在C#中,“class”是保留关键字 - 在保留关键字的前面添加“@”符号,可以将关键字用作标识符。
这是一个直接来自C#规范的例子:
class @class {
public static void @static(bool @bool) {
if (@bool) System.Console.WriteLine("true");
else System.Console.WriteLine("false");
}
}
注意:这当然是一个例子,不推荐练习。