首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在回发中保留样式属性

在回发中保留样式属性
EN

Stack Overflow用户
提问于 2016-02-15 14:29:41
回答 1查看 2.5K关注 0票数 0

我有一个div和4个下拉控件。

使用Style="display:none"隐藏默认div。

第一次跌落没有自动倒车事件。

Div的显示属性在第一次下拉式的很少值上被改变。一旦它可见。用户可以在下拉字段2/3/4中更改值,该字段具有自动回发真。

当用户更改任何2-5下拉控件中的值时,回发触发器并将该Div的display属性设置为Style="display:none"

如何保留div的显示属性。

这在.aspx页面上

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-15 14:38:52

样式不是包含在PostBack中的数据的一部分。为了包含它们,您可以在页面上创建一个隐藏字段,每当客户端代码更改div的可见性时,也可以设置该字段。

代码语言:javascript
运行
复制
<asp:HiddenField ID="hidden" runat="server" />

当PostBack到达服务器时,计算隐藏字段的Value属性,并在div上设置样式,使其与存储在隐藏字段中的状态匹配。为了能够在div上更改.NET代码中的样式,需要确保指定了runat="server"

代码语言:javascript
运行
复制
<div ID="myDiv" runat="server">
    <!-- ... -->
</div>

示例

下面的示例演示如何使用隐藏字段将可见性传输到服务器并在客户端上还原。在ASPX中,有div,用于存储可见性的隐藏字段,以及设置div的可见性和隐藏字段的值的脚本:

代码语言:javascript
运行
复制
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

    <div id="myDiv" runat="server" style="display:none;">
        Div is visible
    </div>
    <asp:HiddenField ID="myHidden" runat="server" />
    <input type="button" value="Toggle visiblity" onclick="javascript:toggleDiv()" />
    <asp:Button ID="btn" runat="server" Text="Postback" />
    <script type="text/javascript">
        function toggleDiv()
        {
            $(myDivId).toggle();
            $(myHiddenId).val($(myDivId).css('display'));
        }
    </script>

</asp:Content>

需要注意的是,div和隐藏字段获得特殊的ASP.NET客户端is,这些is不一定与ASPX文件中的标记is匹配。因此,我注册了一个使用ids (myDivIdmyHiddenId)定义变量的启动脚本:

代码语言:javascript
运行
复制
protected void Page_Load(object sender, EventArgs e)
{
    ClientScript.RegisterStartupScript(GetType(), "DivId", 
        "var myDivId = '#" + myDiv.ClientID + "';" + Environment.NewLine + 
        "var myHiddenId = '#" + myHidden.ClientID + "';", 
        true);
}

当发生回发时,隐藏字段的值将传输到服务器,并可使用。我定义了一个PreRender事件处理程序,它恢复了div的可见性

代码语言:javascript
运行
复制
protected void Page_PreRender(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(myHidden.Value))
        myDiv.Style[HtmlTextWriterStyle.Display] = "none";
    else
        myDiv.Style[HtmlTextWriterStyle.Display] = myHidden.Value;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35411961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档