【问题标题】:Mixing server controls and jquery templates on a ASP.NET page在 ASP.NET 页面上混合服务器控件和 jquery 模板
【发布时间】:2012-01-01 10:37:53
【问题描述】:

我正在处理一个混合了服务器端控件和使用 jquery 模板呈现的简单 html 控件的页面。这是一个 ASP.NET 网络表单应用程序。

当通过单击保存按钮发出服务器端请求时,如果服务器上的验证失败,则回发会导致在简单 html 控件中输入的值丢失(因为它没有视图状态)。

我能想到的唯一解决方案是在发出服务器请求之前将简单 html 控件的状态保存到隐藏的输入控件中。如果验证失败,则从这个隐藏的输入重新水化 jquery 模板。看来我可以在 jquery 中使用 serialize 函数,但我需要忽略此集合中的服务器控件(我认为?)

除了必须序列化/反序列化信息之外,还有更简单的方法吗? UpdatePanel 有帮助吗?

【问题讨论】:

    标签: asp.net webforms jquery-templates


    【解决方案1】:

    坦率地说,我不认为 UpdatePanels 有帮助。它们会使您的代码隐藏复杂化(尽管您的代码中可能已经有很多 if (Page.IsPostback == false) 语句)并且请求可能非常慢。我个人觉得它们使用起来非常麻烦。

    根据页面的大小和复杂性,可能值得检查 .asmx webservices。我自己也广泛使用过它们(事实上,对于这种精确的情况),如果你已经在使用 jQuery,调用它们非常容易。

    但是,作为警告:我在这里阅读了一些问题和其他地方的文章,说 .asmx 样式的 Web 服务最终会消失,您应该开始使用 WCF 来替换此功能.

    如果您发布一些标记和/或 C# 代码(它根本不必很复杂;只要我们说同一种语言就够了(可怕的笑话)),我可以为您提供示例jQuery AJAX 调用和 WebService 示例。

    【讨论】:

    • 我熟悉 asmx/wcf 服务。您是否建议保存操作应序列化非服务器控件信息并将其传递给服务器进行验证,并且服务器控件自己进行回发和验证?
    • 我建议将服务器和非服务器控制数据推送到 asmx/wcf 服务。过去,我编写过纯粹用于传输/验证目的的 C# 类,这个模型对我来说效果很好。
    【解决方案2】:

    在我看来,只要您的某个页面的回发不会导致重定向,您就会遇到这个问题。基本上,您没有办法在回发请求和响应中保留简单 html 控件的状态。基本上,您需要一个与简单 html 控件的视图状态等效的 JQuery。我所说的基本上是使用 JQuery 序列化函数来保存状态可能是最简单的方法。 ViewState 通过序列化控件状态并将其置于隐藏字段中来工作。因此,您实际上是在为您创建的简单 html 控件创建自己的视图状态实现。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 2011-02-23
      • 1970-01-01
      • 2011-07-13
      • 2013-10-03
      • 2012-04-27
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      相关资源
      最近更新 更多