【问题标题】:asp:Button CssClass property is not setting the CSS class to the one I specifyasp:Button CssClass 属性未将 CSS 类设置为我指定的类
【发布时间】: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 产品,他们的支持是一流的。

标签: asp.net css aspbutton


【解决方案1】:

您可以为 asp.net 控件设置内联样式。

<asp:Button ID="btnMyButton" runat="server" CausesValidation="false" Text="ClickMe"
            Style="font-size: 80pt; color: Red;" />

.MyButton
{
    font-size:80pt;
    color:Red;
}

<asp:Button ID="btnMyButton" runat="server" CausesValidation="false" Text="ClickMe"
             CssClass="MyButton"/>

对我来说很好。

干杯

【讨论】:

  • 我想避免内联样式定义,我宁愿它们都在 CSS 文件中定义。至于你的第二个例子,这几乎就是我所拥有的,但它对我不起作用,我不知道为什么。
  • 将 CSS 添加到 HTML 文档头部的 标记之间,看看是否有效。
  • 也许这个按钮只需要设置内联样式。你试过吗?它有效吗?有些东西显然没有正确连接。
  • 它确实应用了我设置的内嵌样式。此外,尽管 MSDN 建议不要这样做,我还是通过尝试应用类和内联 CSS 样式对其进行了测试。当我的班级使用自定义名称时,只应用了内联的。当使用类名 submitBtn 时(请参阅我更新的问题),内联样式会覆盖我定义的 submitBtn 类,但仍会应用它未覆盖的其他样式。
【解决方案2】:

我知道这是老问题,但如果有人遇到同样的问题,您还应该检查您的 .skin 文件。就我而言,有以下声明:

&lt;asp:LinkButton CssClass="linkbtn"&gt;&lt;/asp:LinkButton&gt;

这迫使整个应用程序中的所有 LinkBut​​ton 控件都具有“linkbtn”类,并且无法覆盖它。

【讨论】:

  • 谢谢,这实际上帮助我确定了问题的真正原因。我不喜欢事情自行其是
【解决方案3】:

有同样的问题。就我而言,我使用的是 SharePoint,它的 CSS 覆盖了我的按钮样式。试试:

.MyButton
{
    font-size:80pt !important;
    color:Red !important;
}

!important 使样式不可覆盖...

【讨论】:

  • 啊,救了我。 Jquery 将样式应用于我的 ASP:Buttons,甚至设置 CssClass 也无助于覆盖样式.. 使用 !important 标志解决了这个问题,谢谢!
【解决方案4】:

改用&lt;asp:LinkButton&gt;

所以你的按钮是

<asp:LinkButton ID="btnMyButton" runat="server" CssClass="MyButton" CausesValidation="False" Text="ClickMe" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多