我有一个UserControl,其中包含这个AJAX模式弹出扩展器:
<ajax:ModalPopupExtender ID="MPE" runat="server"
TargetControlID="btnChangePassword" PopupControlID="pnlPasswordChanging"
BackgroundCssClass="modalBackground" DropShadow="true"
CancelControlID="btnCancel" OnCancelScript="ULC_ChangePw_CancelBtnClick();" />
这里没什么特别的。问题来自BackgroundCssClass
属性 - 它需要一个名为 modalBackground 的CSS类。不幸的是,我无法以回发后的方式从用户控件添加CSS类。
如果我将 modalBackground 类添加到 .ascx 页面:
<style type="text/css">
.modalBackground
{
background-color: #A1A1A1;
filter: alpha(opacity=70);
opacity: 0.7px;
}
</style>
...它会在首次加载时显示属性,但在后续回发后不会显示。当然,我可以在页面本身内定义 modalBackground ,或者在用户控件调用的独立CSS文件中定义,但这两种解决方案都不适用于我。
无法以编程方式创建CSS类并将其添加到页面中吗?基本上我正在寻找与Javascript的RegisterClientScriptBlock
函数等效的CSS:
Dim controlNameScript = String.Format("<script type='text/javascript'> var AppMenuName = '{0}' </script>", Me.ClientID)
Me.Page.ClientScript.RegisterClientScriptBlock(myType, "ControlName", controlNameScript)
谢谢!
答案 0 :(得分:1)
将此类包含在您在站点的母版页中引用的css文件或特定页面本身是标准的。为什么这对你不起作用?
答案 1 :(得分:1)
如果CSS是在.ASCX文件中定义的,那么每次都应该渲染它,回发与否。除非控件本身设置为Visible =“false”。
一种解决方法是在控件上的asp:Literal块中定义CSS代码。然后,您的控件可以公开一个公共函数,该函数只是将该文本的内容返回给调用者。如果主机要使您的控件不可见,他们可以使用该公共函数获取CSS代码,并将其放在页面的head部分中。这样,无论控件的可见性设置如何,CSS定义都应该始终存在。
在更大的方案中,Adam是正确的:最好尽可能将CSS代码保存在.CSS文件中。
答案 2 :(得分:0)
好的,这就是我解决问题所需的全部内容:
Me.Page.Header.Controls.Add(
New LiteralControl("<style type=""text/css""> .modalBackground {background-color: #A1A1A1; filter: alpha(opacity=70); opacity: 0.7px;} </style>"))