Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“在哪里?”;aspNetDisabled“;类已定义,为什么ASP.NET呈现重复的CSS;“类”;它的属性?_Asp.net_Css_Controls - Fatal编程技术网

“在哪里?”;aspNetDisabled“;类已定义,为什么ASP.NET呈现重复的CSS;“类”;它的属性?

“在哪里?”;aspNetDisabled“;类已定义,为什么ASP.NET呈现重复的CSS;“类”;它的属性?,asp.net,css,controls,Asp.net,Css,Controls,当我将ASP.NET TextBox控件的“Disabled”属性设置为false时,最终呈现的HTML textarea标记(发送到浏览器)除了“Disabled=”Disabled”属性外,还包括一个“class=”aspNetDisabled“”属性。“aspNetDisabled”类在哪里定义 在我看来,它似乎没有在任何地方定义,真正的杀手是这个无用的类正在干扰我定义的类,因为ASP.NET正在将它作为一个重复的CSS类属性呈现到控件中: <textarea [...] disab

当我将ASP.NET TextBox控件的“Disabled”属性设置为false时,最终呈现的HTML textarea标记(发送到浏览器)除了“Disabled=”Disabled”属性外,还包括一个“class=”aspNetDisabled“”属性。“aspNetDisabled”类在哪里定义

在我看来,它似乎没有在任何地方定义,真正的杀手是这个无用的类正在干扰我定义的类,因为ASP.NET正在将它作为一个重复的CSS类属性呈现到控件中:

<textarea [...] disabled="disabled" class="aspNetDisabled" class="boxsizingBorder largeinput">

其他人能确认这个错误吗


附加信息 IIS版本:7.0.6000.16386
AppPool.NET Framework版本:v4.0
ASPX页面中的服务器控件标记:

<asp:TextBox ID="txtInput1" class="boxsizingBorder largeinput" runat="server" TextMode="MultiLine"></asp:TextBox>.

您可能需要查看以下内容:

首先,没有“类”属性。这是一个HTML控件;如果需要服务器端访问,则需要添加runat=“server”属性。有一个“已禁用”属性。还有一个“样式”属性


您能否准确地解释您正在尝试做什么,以及为什么不使用文本框而将属性设置为multiline?

对于仍在寻找此属性的任何人,我们可以在全局中启动应用程序时定义此css类。asax:

void Application_Start(object sender, EventArgs e)
{
    WebControl.DisabledCssClass = "customDisabledClassName";
}

来源:

小心,在.net 4.5中,生成的html已更改:

disabled="disabled"

不会始终存在,因此请使用“aspNetDisabled”或为javascript或css定义的DisabledCSClass。

这是因为ControlRendering兼容版本。 如果框架版本高于4,则此属性将设置为默认值 “pages controlRenderingCompatibilityVersion=“4.0”

更改controlRenderingCompatibilityVersion=“3.5”
您可以看到class=“aspNetDisabled”将从html中删除。

我最后做了以下操作,有效地删除了为禁用项插入的额外类

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    WebControl.DisabledCssClass = "";
}

乍一看,这似乎是(糟糕的)设计

如果控件的SupportsDisabledAttribute属性为false,则 控件已禁用,ASP.NET将设置 将HTML元素呈现为WebControl.DisabledCSClass的值 属性。WebControl.DisabledCSClass的默认值 属性为“aspNetDisabled”。为提供禁用的外观 禁用控件时,必须为要禁用的类定义CSS规则 由WebControl.DisabledCSClass属性的值表示。 为控件呈现的HTML元素可能有多个 如果其CssClass中有值,则在其class属性中有一个值 属性。有关更多信息,请参阅DisabledCSClass属性

奇怪的是,我在同一个网页中看到disabled=“disabled”和class=“aspNetDisabled”: 我有一个面板被禁用,它似乎将disabled=“disabled”添加到其所有渲染的子级(包括DropDownList子级),但我碰巧显式设置为Enabled=“False”的列表框除外,它似乎得到class=“aspNetDisabled”。当我启用父面板时,渲染时这些列表框仍然使用class=”aspNetDisabled”(而不是DropDownList似乎使用的disabled=“disabled”),用户可以在其中选择一个项目(它们没有被禁用)


所以它看起来确实像ListBox控件上的一个bug,可能它将“SupportsDisableAttribute”设置为false,而DropDownList必须将其设置为true。如果是这样,这很愚蠢,因为它们最终都呈现为“select”,ListBox只使用“size=4”“要默认显示4项,可能会出现Visual Studio框架问题。 解决方案是,您必须选择在其中创建项目的框架。 要更改框架,请遵循以下步骤

1) 右键单击特定项目->属性页。

2) 选择Build。 3) 更改目标框架。

当您对asp.net中的任何控件使用Enabled=“false”时,它会自动将css类“aspNetDisabled”与该控件绑定。如果您不想使用自动提供的类,您可以在.cs文件的第一步使用下面的代码行来实现这一点

System.Web.UI.WebControls.TextBox.DisabledCssClass = "CLASS_NAME_WHICH_YOU WANT_TO_APPLY";
//或者你可以把它变成空白 //在上面的代码行中,我为TextBox控件完成了这项工作。如果要申请其他控件,也可以执行以下操作:-

System.Web.UI.WebControls.CheckBox.DisabledCssClass = "CLASS_NAME_WHICH_YOU WANT_TO_APPLY";

我已经在使用TextBox web控件(System.web.UI.WebControls.TextBox)。runat=“server”属性在ASPX源文件中设置。我正在使用ASPX.CS服务器端代码文件中的Disabled属性(将其设置为false)。我描述了ASP.NET呈现的HTML,并将其提供给TextBox web控件(FireFox->View Page Source)的浏览器。最终得到的HTML包含一个覆盖了我的重复类属性。解决方法是将静态TextBox.DisabledCSClass设置为空字符串,这样它将停止呈现重复的类属性。是否尝试将Visible设置为false?请尝试CssClass而不是class。我让它在FX4Ok中正常工作。因此,错误在于,虽然允许标记上的自定义属性,并将其传播到最终呈现的HTML中,但呈现引擎没有考虑到这样的情况,即指定的自定义标记也是呈现的标记,并且无法合并值。出于性能原因,这一点可能会被忽略,但为了正确地支持自定义标记(正如它所声称的那样),它应该通过尝试将自定义属性合并到单个属性值或至少具有定义良好的优先规则来处理指定与输出属性相匹配的自定义属性的一般情况。因此,最好使用ASP.NET控件特有的CssClass属性,以保持属性呈现过程尽可能纯净,因为使用自定义属性可能会产生干扰。什么版本