加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何为登录表单的链接指定返回URL?

发布时间:2020-12-15 22:28:06 所属栏目:asp.Net 来源:网络整理
导读:看起来很简单,但事实证明并非如此 – 主要是因为View无法知道你通过模型和控制器走哪条路.无论如何,这是一个需要解决方案的问题: 我有一个登录链接,它将用户带到表单输入用户名和密码.当用户点击“提交”时,我想重定向到他正在查看的页面.最简单的方法似乎
看起来很简单,但事实证明并非如此 – 主要是因为View无法知道你通过模型和控制器走哪条路.无论如何,这是一个需要解决方案的问题:

我有一个登录链接,它将用户带到表单输入用户名和密码.当用户点击“提交”时,我想重定向到他正在查看的页面.最简单的方法似乎是将当前页面的url指定为查询字符串(…?returnUrl = …),其他所有内容都已构建完成.

但是在渲染链接时,我从哪里可以找到这个网址?我自然不能使用RedirectToActionResult,因为我不想实际转移用户 – 只在链接中呈现URL.如何?

编辑:

我现在已经开始对这个问题给予赏金,因此我认为也适合澄清我的需求.

我的共享文件夹中有一个名为Login.ascx的UserControl.在其中,我将一个ActionLink呈现给登录表单,它包含在我的主页上的页脚中.我想要完成的是以下内容:

呈现ActionLink时,查询字符串returnUrl会附加到当前正在呈现的视图的路径.如果完成此操作,用户将在成功登录后使用已构建到ASP.NET MVC框架中的功能返回到他/她正在查看的页面.

之前的答案还不充分的原因主要是他们没有提供一种方法来构建当前视图的路由URL.我知道如何附加一个查询字符串,但我不知道如何找出该字符串中的内容.

为了将答案标记为答案,我想要一种方法从主页中的用户控件重新构造到当前显示的视图的路径.

解决方法

解决方案是使用HttpContext.Current.Request.RawUrl,如下所示:
<%= Html.ActionLink("log on","LogIn",new { controller = "User",returnUrl = HttpContext.Current.Request.RawUrl }) %>

或者使用MVC futures(Microsoft.Web.Mvc.dll)的扩展方法:

<%= Html.ActionLink<AccountController>(c => c.LogOn("name","password",false,HttpContext.Current.Request.RawUrl),"login here")%>

ActionController是mvc中的默认值,但只需将returnUrl添加到您自己的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读