你如何在asp.net页面上获得元素的样式

时间:2011-06-30 16:31:17

标签: c# javascript asp.net css asp.net-mvc

我有一个带有手风琴javascript的管理页面来显示/隐藏div。

<div class="accordion">
    <h2>Pending</h2>
    <div id="pending" class="accordion-item">PARTIALVIEW</div>
    <h2>Current</h2>
    <div id="current" class="accordion-item">PARTIALVIEW</div>
    <h2>All</h2>
    <div id="all" class="accordion-item">PARTIALVIEW</div>
</div>

当他们删除某个项目时,页面会刷新并返回折叠状态。我想让它记住哪些是开放的,哪些是关闭的。

手风琴javascript提供div style="display: none"style="display: block"

有没有办法在重新加载页面之前获取样式,并在再次加载后应用它?

5 个答案:

答案 0 :(得分:1)

如果您想在页面上主动查看样式和更改,我建议使用Firebug(FireFox插件)。

至于拯救国家,有两种方法。第一种是AJAX方法。第二种是基于cookie的JS方法。

对于AJAX方法,您需要编写一个JS函数,只要状态发生变化就会触发该函数。然后,此方法在快速幕后查询中将所有可折叠选项的状态发送到服务器。然后,服务器将此信息保存到会话变量中。然后,当重新加载页面时,服务器可以为页面上的每个项目生成一个JS数组,其中包含最后已知的状态信息。

对于第二种方法,您必须设置一个cookie,其中包含一个具有所有项目状态的变量。这可以是一个简单的数组。这与AJAX方法的工作方式相同,只是数据保存在客户端浏览器而不是服务器上。您从cookie数组而不是服务器数组中获取状态。

对于其中任何一个,我建议使用JQuery库。对于cookie方法,我建议使用JQuery的Cookie插件(http://plugins.jquery.com/project/Cookie)。以下是关于此问题的快速文章:http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html

JQuery - http://jquery.com/
JQuery UI - http://jqueryui.com/
Visual JQuery(一个很好的,易于使用的JQuery参考) - http://visualjquery.com/
萤火虫 - http://getfirebug.com/
Firefox - (永远不要离开家)http://www.mozilla.com/en-US/firefox/fx/

答案 1 :(得分:0)

要完成此操作,我将处理手风琴的change事件,并在html5 localstorage或cookie中存储更新的值。加载页面时,只需检查是否存在已保存的值并恢复手风琴的状态。

如果您使用jqueryui的手风琴,createchange事件应该可以满足您的需求。

答案 2 :(得分:0)

抱歉,我没有看到mvc标签。

您必须使用javascript和Cookie执行此操作,以减少对用户体验的影响(html5存储会显示提示)。

答案 3 :(得分:0)

ASP.NET AJAX框架使用隐藏字段来完成此任务;虽然你可能没有使用它,但hiddens有很多优点。它们可以存储任何类型的数据并在服务器上序列化,它们可以回发到服务器,并且可以通过匹配名称来通过操作方法进行处理。

HTH。

答案 4 :(得分:-1)

您可以很好地存储当前显示在隐藏字段中的div的ID。当然,这需要一些Javascript,但如果提交的文件是runat="server",您应该可以在服务器端轻松访问它。根据该值,您可以执行隐藏/显示逻辑。

IMO,隐藏字段仍然是客户端与服务器共享其状态的最简单方法。