【问题标题】:How can I share a variable between my C# ASP.NET code and the HTML/JavaScript? [duplicate]如何在我的 C# ASP.NET 代码和 HTML/JavaScript 之间共享一个变量? [复制]
【发布时间】:2012-11-15 19:19:02
【问题描述】:

可能重复:
How to share a variable between C# and JavaScript?

我正在增强一个 C# ASP.NET Web 应用程序,它在 HTML 中有两个重要的部分。有两个菜单选项可以隐藏一个,另一个不隐藏。我们称它们为第一页和第二页。

问题是页面上的某些内容会导致回发,这会导致完全刷新并强制默认为第一页。此外,我们每五分钟自动刷新一次以获取新的页面内容。如果用户在自动刷新或由于用户单击某些内容后的回发而恰好正在查看第二页,则该页面会自动返回到第一页。

长期的解决方案是正确使用 AJAX。现在我需要一种快速而肮脏的方法来记住用户在刷新时所在的页面,然后在刷新时将他放回该页面。

我可以在 C# 中的服务器端创建一个变量,我可以在客户端使用 JavaScript 查询吗?从技术上讲,如果我能以某种方式让客户端从页面刷新到刷新,服务器不需要知道浏览器中显示了哪个页面 div。有没有办法做到这一点?

如果这看起来很简单,请原谅我。我有多年的编程经验(主要是 MS-DOS 和 Unix 领域中的 C/C++),但在 ASP.NET 环境中并不多。

【问题讨论】:

  • 你应该尽量解释你的问题,你想做什么而不是这么详细。很难弄清楚你到底需要什么。
  • 服务器是否知道客户端在哪个页面?还是只有 javascript 知道?
  • 不,服务器不知道显示的是哪个页面。它每次都将两个页面的所有 HTML 都发送下来。 (从技术上讲,这是一个具有两个不同 div 的页面,一个被隐藏而另一个被显示。)客户端的 JavaScript 隐藏一个 div,并在每次单击两个链接(第一页和第二页)之一时显示另一个。

标签: c# javascript asp.net html variables


【解决方案1】:

如果您使用元标记刷新页面<meta http-equiv="refresh" content="600"/>,那么您应该将标签/页面ID与url一起传递:

<meta http-equiv="refresh" content="600;url=http://yourdomain.com/page.html?tab=<%= tab %>/">

当您向页面发送任何回发时也添加此属性。

现在,你只需要在服务器端读取这个属性的一个值,并在元刷新标签中替换它:

tab = Request.QueryString["tab"]

【讨论】:

  • 这似乎是一个有趣的解决方案,但细节呢?我的 JavaScript 必须做任何事情吗?还是我的服务器端代码必须询问选项卡值,然后只发回所选页面的正确 HTML?
  • @DaveInATL - 它可以通过在您的 javascript 中使用 &lt;%= %&gt; 标记来呈现已设置该选项卡值的 HTML。
  • 好的,谢谢 Bobson。我想我已经找到了一个使用 asp:HiddenField 和服务器端的会话状态变量的解决方案。稍后我会尝试发布更多信息。
  • @DavelnATL 您的解决方案可能也不错。有一个缺点,认为:使用会话状态不可能将书签添加到显示的选项卡。此外,网址对搜索引擎不友好。但是,如果这是一个 Intranet Web 应用程序,那也没关系。
  • Piotr,是的,它是一个 Intranet 应用程序。感谢您的反馈。
猜你喜欢
  • 2023-03-17
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 2013-07-26
  • 2010-11-05
  • 2013-04-22
相关资源
最近更新 更多