一个很大的困境 - ASP.NET和jQuery

时间:2009-06-09 11:49:09

标签: asp.net jquery

我有一个向导式界面,我需要从用户那里收集数据。我的经理们已经要求我按照一步一步的流程收集信息。

我已决定将该过程的每个步骤作为单独的用户控件使用page.aspx。 step1.ascx step2.ascx等...

现在的工作方式是,当初始GET请求进入时,我渲染整个页面(位于母版页内)和step1.ascx。当然后下一个POST请求进入第2步(使用查询字符串步骤= 2)时,我通过重写Render(HtmlTextWriter)方法并使用jQuery html()方法替换div的内容,只将step2.ascx渲染到浏览器。

整个方法的问题,除了hacky(在我看来)之外是因为这通常是在服务器端处理所以不可能更新viewstate。

我的解决方法是将step1.ascx的内容存储到临时会话存储中,因此如果用户决定单击“返回”按钮返回一步,我可以吐出之前为其存储的值。

我觉得我在这里戴上我的技术帽子想要尝试最新的Javascript热潮,因为jQuery与.NET已经采取了很多黑客方法和逆向工程来做对。简单地使用更新面板并完成它是否更容易?或者是否有一个网站具有使用jQuery在ASP.NET中执行所有操作的全面资源?

感谢您花时间阅读本文。

3 个答案:

答案 0 :(得分:7)

另一种可能更容易使用的方法是使用初始GET请求加载整个表单,然后隐藏所有部分除外第一个。然后使用jQuery隐藏和显示表单的不同部分,当显示最后一部分时,整个表单将在 one POST中发布到服务器。这样你就可以处理服务器上的输入,就像用户在一个步骤中完成数据输入一样,并且仍然可以在客户端获得逐步的表达。

答案 1 :(得分:1)

您可以一个接一个地放置所有用户控件,并打开当前步骤控件的可见性,并在适当时启用其他控件。无需使用重写Render()。这样,用户控制'viewstate将由服务器管理。并且您可以专注于任何步骤验证逻辑。

使用UpdatePanel来包含这些步骤将提供ajax体验,并且仍然能够为每个步骤提供验证。如果您可以同时验证多个步骤,Tomas Lycken的建议(使用JQuery隐藏/显示)将提供快速一步一步的体验。

答案 2 :(得分:0)

您是否考虑过使用ASP.NET Wizard control?定制UI有点挑战,但在类似情况下它对我来说效果很好。