在ASP. js中混合服务器控件和jquery模板.网络页面



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

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

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

除了序列化/反序列化信息之外,有没有更简单的方法?UpdatePanels有帮助吗?

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

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

然而,作为一个警告:我在这里和其他地方读到一些问题,说.asmx风格的web服务最终会消失,你应该开始使用WCF来取代这个功能。

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

在我看来,你会有这个问题,任何时候有一个回发从你的一个页面,不导致重定向。基本上,您没有办法在回发请求和响应之间保留简单html控件的状态。基本上,对于简单的html控件,您需要一个相当于viewstate的JQuery。我想说的是,使用JQuery序列化函数来保存状态可能是最简单的方法。ViewState通过序列化控件状态并将其放入隐藏字段来工作。因此,您实际上是在为您已经创建的简单html控件创建您自己的viewstate实现。

最新更新