【问题标题】:UserControl variable in Ajax siteAjax 站点中的 UserControl 变量
【发布时间】:2015-08-08 07:15:27
【问题描述】:

我有一个带有 UpdatePanel 的单页网站。在该 UpdatePanel 中,有一些动态加载的 UserControl。

“页面”(只是用户控件)之间的所有链接都是通过使用 WebMethod 完成的,该方法更改了存储要加载的用户控件的 Session 变量。使用新的 UserControl 重新加载页面,一切正常!

然而,这种方法的缺点是我知道Session 变量不能很好地扩展。他们中的太多人到处乱踢不是一件好事,所以我听说了。我没有成功尝试使用不同的方法,但未能成功。我希望将 UserControl 设置为在页面生命周期的早期加载。

我已经尝试过 HttpContext.Current.Items、UserControl 公共属性甚至是 UserControl HTML 注入。真是一团糟。

这种情况有最佳实践吗?任何有用的链接或建议?

非常感谢。

清晰度更新 我希望通过 jQuery 方法调用或 Web 方法更改要由 C# 代码隐藏文件加载的 UserControl。会话变量有效,但不能扩展。

【问题讨论】:

    标签: c# jquery ajax


    【解决方案1】:

    我会使用localStorage,你可以存储很多这样的信息

    localStorage.setItem('var', 'data');
    

    然后像这样取回数据

    var data = localStorage.getItem('var');
    

    【讨论】:

    • 好的,那么我如何在 C# 中访问这些数据?本地存储不只是以某种形式等同于会话变量(即不能很好地扩展)吗?
    • localStorage 是一个非常强大的容器,用于以与会话类似的方式存储客户端数据,但更灵活。如果您试图将服务器端数据保留在客户端上,我建议使用数据库来存储该信息。您可以通过 C# 访问 javascript,方法是将数据直接打印到 javascript 变量/对象中,但如果您的应用程序可扩展,则需要处理更多代码。
    • 是的,我刚刚读过它。对于这样一个简单的问题,数据库解决方案似乎有点过头了。在页面重新加载之前,我确实需要一个字符串通过onClientClick 到代码隐藏。同样,带有 Session 变量的 WebMethods 可以工作,但我想远离 Session vars。
    • 根据数据以及如何实现安全性,您可以使用 POST 或 GET 在页面之间传递数据。如果数据需要比我使用数据库更持久,除非 C# 有一些特定的功能来处理你想要做的事情。任何 jquery/javascript 解决方案都将要求您从 javascript 来回传递数据。
    • 我需要的唯一数据是要加载的 UserControl 的名称和一个查询字符串。我只是在模拟链接到另一个页面。我一直在使用触发 JS 方法(使用 Ajax POST)的按钮的 OnClientClick,该方法又通过 C# WebMethod (HttpContext.Current.Session = "SomeControl.ascx" 更改 Session 变量。页面在重新加载时,然后获取此会话变量的当前值。
    猜你喜欢
    • 1970-01-01
    • 2012-09-17
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多