gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:56:29 28 4
gpt4 key购买 nike

看起来似乎很简单,但事实并非如此-主要是由于View无法知道通过哪种方式通过Model和Controller到达那里。无论如何,这是一个需要解决的问题:

我有一个登录链接,该链接将用户带到一个表单以输入用户名和密码。当用户单击“提交”时,我想重定向到他正在查看的页面。这样做的最简单方法似乎是将当前页面的url指定为querystring(...?returnUrl=...),其他所有内容均已构建。

但是,在呈现链接时,如何从我的 View 中找到该URL?我自然不能使用RedirectToActionResult,因为我不想实际转移用户-仅在链接中呈现url。如何?

编辑:

我现在开始悬赏这个问题,因此,我认为也可以澄清我的需求。

我的共享文件夹中有一个名为Login.ascx的UserControl。在其中,我将ActionLink呈现到登录表单,该链接包含在我的主页的页脚中。我要完成的工作如下:

呈现ActionLink时,查询字符串returnUrl会附加,这是到当前正在呈现的 View 的路径。如果完成此操作,则用户成功登录后将使用已内置在ASP.NET MVC Framework中的功能将用户带回到他/她正在查看的页面。

前面的答案不够充分的原因主要是它们没有提供一种方法构建到当前 View 的路线url。我确实知道如何附加查询字符串,但是我不知道如何找出要放入该字符串的内容。

为了将答案标记为答案,我希望有一种方法可以从母版页中的用户控件重构到当前显示 View 的路线。

最佳答案

解决方案是像这样使用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添加到您自己的。

关于asp.net-mvc - 如何为登录表单的链接指定返回URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/505540/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com