Asp.net mvc 3 如何根据用户来自哪个页面重定向用户?
我有一个页面(呈现视图的控制器操作),用户可以从3个不同的页面导航到该页面。基本上,用户到达那里,进行一些选择,然后单击保存按钮。此时,我需要将用户重定向到他来自的位置 我想知道,最好的做法是什么 我知道,例如,我可以查看请求,找出他来自哪里,然后重定向回那里。。。但对我来说,这似乎不是理想的方法 我想知道,最好的做法是什么 调用此操作时传递一个Asp.net mvc 3 如何根据用户来自哪个页面重定向用户?,asp.net-mvc-3,c#-4.0,Asp.net Mvc 3,C# 4.0,我有一个页面(呈现视图的控制器操作),用户可以从3个不同的页面导航到该页面。基本上,用户到达那里,进行一些选择,然后单击保存按钮。此时,我需要将用户重定向到他来自的位置 我想知道,最好的做法是什么 我知道,例如,我可以查看请求,找出他来自哪里,然后重定向回那里。。。但对我来说,这似乎不是理想的方法 我想知道,最好的做法是什么 调用此操作时传递一个returnUrl参数。如有必要,将其存储在隐藏字段中。确保执行验证并需要重定向的控制器操作以某种方式获得此参数作为操作参数,并且在时间到来时返回重定向
returnUrl
参数。如有必要,将其存储在隐藏字段中。确保执行验证并需要重定向的控制器操作以某种方式获得此参数作为操作参数,并且在时间到来时返回重定向(returnUrl)代码>(代表问题作者发布)
这就是我最后做的
控制器:
public ActionResult Index()
{
ViewBag.Referrer = Request.UrlReferrer.LocalPath;
//.....
return View();
}
<a href="@ViewBag.Referrer">Back</a>
视图(Razor语法):
public ActionResult Index()
{
ViewBag.Referrer = Request.UrlReferrer.LocalPath;
//.....
return View();
}
<a href="@ViewBag.Referrer">Back</a>
首先我该如何获得它?从请求中抓住它?@Dimskiy:好主意。还有什么其他信息来源?@Dimskiy,让控制器操作将其作为操作参数:public ActionResult(string returnUrl){…}
,然后确保调用此操作时传递了returnUrl
参数。@S.Lott-实际上什么都没有。它是用于模型的同一个对象,只是填充了不同的数据。真的想不出任何其他东西了。@Darin Dimitrov-我想,我只是从其他地方调用的视图的操作中的请求中获取它。我不想在调用操作中硬编码该参数,除非有办法通过编程获取它。此代码存在潜在问题,因为URLreferer值将根据从浏览器发送的头值填充。想了解更多信息,请看这里:我正试图按照你说的去做——它在Chrome和IE中的行为不同,最重要的是,在这两种情况下都是不正确的。在chrome中,它不返回,重定向到当前视图,在IE中,它重定向到不存在的路径(路径中缺少控制器)。不知道你怎么会这样做。