【发布时间】:2014-03-03 20:37:55
【问题描述】:
我是 asp.net 中 FriendlyUrl 概念的初学者。我想使用 ReturnUrl 登录页面。还能用http://localhost:8080/login?ReturnUrl=/page吗?
所以一旦用户登录将被重定向到returnurl
【问题讨论】:
-
您想重定向到另一个 asp.net 网络表单吗?
标签: c# asp.net friendly-url
我是 asp.net 中 FriendlyUrl 概念的初学者。我想使用 ReturnUrl 登录页面。还能用http://localhost:8080/login?ReturnUrl=/page吗?
所以一旦用户登录将被重定向到returnurl
【问题讨论】:
标签: c# asp.net friendly-url
是的,这仍然是可能的,但如果我正确理解您的问题,可能不是您所期望的。您的 ReturnUrl 是一个 Querystring parameter,Friendlyurls 插件将保持原样,但 Friendlyurl 不会自行使用此参数进行重定向。这是你必须要做的事情。
您在代码中唯一需要做的就是在您的登录代码完成并成功验证您的用户后,使用此参数执行Response.Redirect。你可以把斜线去掉,这样会更容易。只需在您的代码中执行此操作即可:
VB
If Request.QueryString("ReturnUrl") <> Nothing Then
Response.Redirect(Request.QueryString("ReturnUrl"))
Else
// Do your normal redirect here
End If
C#
if (Request.QueryString["ReturnUrl"] != "" &&
Request.QueryString["ReturnUrl"] != null)
{
Response.Redirect(Request.QueryString["ReturnUrl"]);
}
else
{
// Do your normal redirect here
}
这样,您的代码将检查 ReturnUrl 是否可用,如果可用,则使用它进行重定向,或者使用您的默认重定向(如果可用)。
重定向时当然要考虑项目的文件夹结构;如果要重定向到的页面位于项目的子文件夹中,则需要将子文件夹添加到重定向位置,如下所示:ReturnUrl=SubfolderName/Page。即使您使用 FriendlyUrls 和 Distinct 页面名称,这始终很重要。
【讨论】:
我遇到了同样的问题,FriendlyUrls 不能作为 ReturnUrl 工作,我使用的解决方案是覆盖 ReturnUrl,如下所示。一个额外的选项是使用 Jeroens 代码来使用 ReturnUrl。
Protected Sub Login1_LoggedIn(ByVal sender As Object, ByVal e As System.EventArgs) Handles Login1.LoggedIn
'overrides ReturnUrl page parameter
Response.Redirect(Login1.DestinationPageUrl)
End Sub
【讨论】: