Tom*_*han 8 asp.net-mvc url-routing
看起来很简单,但事实证明并非如此 - 主要是因为View无法知道你通过模型和控制器走哪条路.无论如何,这是一个需要解决方案的问题:
我有一个登录链接,用户可以通过表单输入用户名和密码.当用户点击"提交"时,我想重定向到他正在查看的页面.最简单的方法似乎是将当前页面的url指定为querystring(...?returnUrl=...
),其他所有内容都已构建完成.
但是在渲染链接时,我从哪里可以找到这个网址?我自然不能使用RedirectToActionResult,因为我不想实际转移用户 - 只在链接中呈现url.如何?
编辑:
我现在已经开始对这个问题给予赏金,因此我认为也适合澄清我的需求.
我的共享文件夹中有一个名为Login.ascx的UserControl.在其中,我将一个ActionLink呈现给登录表单,它包含在我的主页上的页脚中.我想要完成的是以下内容:
呈现ActionLink时,查询字符串returnUrl
将附加到当前正在呈现的视图的路径.如果完成此操作,用户将在成功登录后使用已构建到ASP.NET MVC框架中的功能返回到他/她正在查看的页面.
之前的答案还不充分的原因主要是他们没有提供一种方法来建立当前视图的路由URL.我知道如何附加一个查询字符串,但我不知道如何找出该字符串中的内容.
为了标记一个答案,该答案,我想的方法来重新构建路线当前显示视图,从母版一个usercontrol.
Dal*_*ala 20
解决方案是使用HttpContext.Current.Request.RawUrl,如下所示:
<%= Html.ActionLink("log on", "LogIn", new { controller = "User", returnUrl = HttpContext.Current.Request.RawUrl }) %>
Run Code Online (Sandbox Code Playgroud)
或者使用MVC期货的扩展方法(Microsoft.Web.Mvc.dll):
<%= Html.ActionLink<AccountController>(c => c.LogOn("name", "password", false, HttpContext.Current.Request.RawUrl), "login here")%>
Run Code Online (Sandbox Code Playgroud)
ActionController是mvc中的默认值,但只需将returnUrl添加到您自己的.
归档时间: |
|
查看次数: |
17324 次 |
最近记录: |