【发布时间】:2019-04-21 20:12:36
【问题描述】:
我正在尝试做一些简单的事情。
我有一个按钮。
<asp:Button ID="btnMyButton" runat="server" CssClass="MyButton" CausesValidation="False" Text="ClickMe" />
它的样式存储在我知道正在使用的样式表中,因为页面中的其他元素使用此样式表中的样式。
这是我定义样式的方式:
.MyButton {
font-size: 80pt;
color: red;
}
我还尝试了一些其他方法来专门指向这个类(包括从包含元素中专门引用它)但无济于事:
input[type="submit"].MyButton {
table.MyTable > tbody > tr > td > input.MyButton {
我可以在 Google Chrome 的开发者工具中看到它甚至没有覆盖我设置的样式,它们根本不存在。
当我查看页面源代码时,我发现 ASP.NET 生成的输入控件甚至没有使用我的类(它使用了一个名为 submitBtn 的东西,我自己没有在任何地方定义它)。如果我在使用 Google Chrome 的开发者工具时将此课程更改为我的课程,我的样式将按照我的预期应用,因此我知道它们是可用的。我只是不知道为什么他们一开始就不习惯。
我可以使用input[type="submit"] { 全局设置所有按钮的样式,但我正在尝试设置特定按钮的样式并且不想使用内联样式定义。
请指教。
编辑:
我发现如果我在我的 css 文件 submitBtn 中调用我的 css 类,它将应用我设置的样式。然而,由于所有 ASP.Net 按钮似乎都想使用这个 submitBtn css 类,为了为每个按钮设置不同的样式,我必须将它们包装在跨度或其他东西中,并以这种方式专门设置按钮样式。
我仍然想知道为什么它不让我设置用于 ASP.Net 按钮的样式类的名称。
为了更清晰,我更新了问题标题。
【问题讨论】:
-
您是否在整个项目中搜索过“submitBtn”?如果您在浏览器的按钮标记中看到该标记,则说明添加它并覆盖您在页面中放置的标记,无论是在服务器上还是客户端上。
-
如果有,那么当我使用 Google Chrome 的 Inspect Element 时,我会不会在 Elements 选项卡的 Styles 部分下看不到这个样式类?当我查看元素时,我无法使用样式下的 submitBtn 类看到它,只有“用户代理样式表”,如果我理解正确的话,这就是浏览器默认的渲染元素。
-
有些东西必须将“submitBtn”添加到您的类属性中。如果您创建一个空白 Web 应用程序,删除一个新的 asp:button,将其 CssClass 设置为“MyClass”,然后运行,您不会看到它被替换为“submitBtn”。我想我的意思是,与其通过包装一个跨度来绕过这个其他类,不如先弄清楚是什么将 submitBtn 类放在首位。如果你不能,那么是的,你可以包装它,以便在你的 CSS 中以不同的方式定位(甚至通过它的 ID 定位)。
-
就是这样,我不知道什么可以覆盖它。它是在 Sitefinity 页面上使用的用户控件。此外,这种 submitBtn 样式显然不存在,因为 Google Chrome 的 web 开发视图显示没有从该名称的类中设置样式。我只在页面源代码中看到该类名。不在应用的样式中。
-
如果您最终发现 Sitefinity 添加了 submitBtn 类,我会提交 Telerik 支持票证或论坛帖子。我没有用过 Sitefinity,但用过其他 Telerik 产品,他们的支持是一流的。