如何在asp.net FriendlyUrls中使用ReturnUrl?

时间:2014-02-06 18:11:24

标签: c# asp.net friendly-url

我是asp.net中FriendlyUrl概念的初学者。我想使用ReturnUrl登录页面。仍然可以使用http://localhost:8080/login?ReturnUrl=/page

因此,一旦用户登录将被重定向到returnurl

2 个答案:

答案 0 :(得分:3)

是的,如果我理解你的问题,这仍然是可能的,但可能不是你所期望的。您的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页面名称,这也很重要。

答案 1 :(得分:0)

我遇到了同样的问题,其中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