我有ASP.MVC的问题。我从很多页面调用这个动作方法,我需要刷新页面后,但我没有链接到用户所在的页面。
public ActionResult Hide<T>(T item, User user) where T : IHidable
{
//... Some action
return SomeThingWhatINeedAndRefreshPage();
//Now I use this, but I do not want to redirect user to Home
//return RedirectToAction("Index", "Home");
}
答案 0 :(得分:2)
您可以获取如下所示的操作和控制器名称,并使用这些值调用RedirectToAction
。
string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
string ctrlName= this.ControllerContext.RouteData.Values["controller"].ToString();
答案 1 :(得分:1)
一种可能性是将客户端所在的原始页面作为附加参数传递:
public ActionResult Hide<T>(T item, User user, string returnUrl) where T : IHidable
{
//... Some action
return Redirect(returnUrl);
}
现在,当您构建此控制器操作的URL时,只需包含当前请求中的returnUrl
参数。
答案 2 :(得分:0)
这对我来说保留了我的查询字符串:
return Redirect(Request.UrlReferrer.ToString());
我的基础是@YuriyP留下的评论,并决定将其作为一个完整的答案 这可能会破坏一些开发模式,因为您可能希望在没有完整回发的情况下异步更新页面的一部分。