我一直在研究某人的项目,并注意到Visual Studio会为每个具有class属性的ASP标记生成一条消息。例如:
属性'class'不是元素'TextBox'的有效属性。
如果我访问该网站,它似乎正常工作。生成消息的示例如下所示:
<asp:TextBox class="makeInline loginItem" ID="UserName" runat="server"></asp:TextBox>
在网站上它变为:
<input type="text" class="makeInline loginItem" id="Login1_UserName" name="Login1$UserName">
因此看起来class属性被转移到HTML标记。这样很好,还是有更好的方法来做到这一点?
答案 0 :(得分:7)
服务器控件使用CssClass
代替class
(可能是为了避免对class
含义的含糊不清)。
所以看起来class属性被转移到了HTML 标签。这样很好还是有更好的方法来做到这一点?
将继承未知属性。但是在它适用于这种情况下,尽可能使用控件所期望的属性。 ASP.Net偶尔会改变标记以“纠正”它。示例:有效的HTML 5输入类型属性(例如type="number"
)在呈现控件时被“更正”,直到发布修复程序以纠正问题。
您可以毫无顾虑地在服务器代码上放置自定义属性(例如data-*
)。
<asp:TextBox runat="server" ID="txtTest" data-foo="bar" />
这不会在Visual Studio 2012中导致验证错误,并按预期呈现。
答案 1 :(得分:2)
使用CssClass
代替class
来删除Visual Studio生成的消息。但不管怎样,使用类也可以。
答案 2 :(得分:2)
要使用的正确属性是CssClass
,在生成页面时,它也会转换为HTML class
属性。