我写的是简单的MVC网页。我将被非常有限的用户使用,所以我不需要,我也不想关心许多标准事物。
我有一些控制器列出了一些实体。用户可以过滤它,可以转到其他页面。它都添加了get参数,即?site=3&id_gt=14
。这是控制器的Index
动作。
我使用POST
处理该列表中的一些操作。例如,可能有行动Delete
。控制器中Delete
操作的内部代码处理请求,并且我将重定向回Index
操作:
public class MyController : Controller
{
public ActionResult Index(/* some parameters*/)
{
...
}
[HttpPost]
public ActionResult Delete(/* some model*/)
{
//deleting code
return RedirectToAction("Index");
}
}
它工作正常,但我从GET
丢失了Index
个参数。是否有任何简单的方法可以从Delete
控制器返回......这会告诉浏览器它应该使用所有GET
参数重新加载当前页面?
答案 0 :(得分:1)
Chris Redhead是对的。您还可以使用TempData集合,该集合通过重定向保留数据,但在内部而不是在查询字符串中。它本质上使用了引擎盖下的会话,但它不会保留超过1个重定向的值。
答案 1 :(得分:1)
我用简单的方法解决了它:
return Redirect(HttpContext.Request.UrlReferrer.AbsoluteUri);
从请求中获取url
并使用所有GET
参数重定向回来。
答案 2 :(得分:0)
调用RedirectToAction()时,可以使用重载RedirectToAction( string actionName, Object routeValues )将参数作为routeValues添加到匿名对象中。
E.G。
return RedirectToAction("Index", new{Parameter1 = (somevalue), Parameter2 = (somevalue)});