ASP.NET回发和URL

2fjabf4q  于 2023-03-20  发布在  .NET
关注(0)|答案(6)|浏览(236)

我有一个页面,需要用户通过几个步骤,但步骤是在同一个ASPX页面上执行的不同面板显示。
但是,这要求每个步骤都有不同的URL,这可以是一个简单的查询字符串参数,例如:
步骤1:/成员/注册.aspx?步骤=1
步骤2:/成员/注册.aspx?步骤=2
步骤3:/成员/注册.aspx?步骤=3
然而,我不希望每次用户继续下一步时都必须将其重定向到新的URL,这将涉及大量的重定向和页面加载上的switch语句,以确定用户处于哪一步。
如果我可以更改在原始请求发送回用户时显示给用户的URL,那就更好了,也就是说,用户在第1步单击“下一步”,页面将进行一些处理,然后更改响应,以便用户看到第2步的URL,但不进行任何重定向。
任何想法都将不胜感激。

ezykj2lf

ezykj2lf1#

你能把你的面板转换成Wizard控件中的步骤吗?

baubqpgj

baubqpgj2#

这可能比您希望的要复杂一些,但是您可以使用submit按钮的PostBackUrl属性来实现此效果。我假设每个面板都有自己的“submit”按钮,并且它们都可以使用此属性来“推进”过程。缺点是为了获得已提交的控件,您需要使用Page.PreviousPage属性来访问任何控件及其值。

nr7wwzry

nr7wwzry3#

你可以基于查询字符串值,通过编程方式修改每个Page_Load上的“Next”按钮的PostbackUrl属性。不过这有点奇怪,因为你不能使用标准的事件处理程序来处理按钮点击,你必须使用Page的PreviousPage属性来获取上一个标签页的数据。
我要说挑战这个要求。为什么有人需要跳到中间的步骤?如果是向用户显示进度的情况,在页面上做,而不是在URL中。

shstlldc

shstlldc4#

你需要每个步骤有不同的网址,比响应。重定向是唯一的选择。因为你想避免重定向,你可以使用IFrame,但IFrame的网址是不可见的用户在他的浏览器。我认为重定向选项是丑陋的(服务器和客户端),因为在这种情况下,你第一次张贴在页面上,然后得到该页面。最好的解决方案是回邮与一些变量跟踪步骤。

byqmnocz

byqmnocz5#

你可以实现一个表单或者url重写,这样你的url就可以
/会员/注册/步骤1/
/会员/注册/步骤2/
/会员/注册/步骤3/
为此,请使用
RewritePath方法,这意味着您可以将/member/signup/step1/重写为/member/signup.aspx?step=1。例如,请参见示例here
我也会使用PRG(post request get)模式,这样每个next link都会将该步骤的表单数据发布到会话中,然后将用户重定向到正确的next url。这将确保用户可以安全地来回导航这些步骤,并且url在所有的post中保持不变。

yqyhoc1h

yqyhoc1h6#

checkout 服务器。传输

相关问题