2009-02-01 186 views
1

我有以下情形:后/重定向/获取:重定向到特定路径

我有一个编辑页面,可以从不同的页面调用。这些页面可以是当前实体的详细视图,也可以是实体的列表视图(在路径中有或没有搜索)。

如何使用MVC框架干净地重定向到原始调用页面?当然,我可以简单地通过将HttpContext.Request.Url值保存在我的TempData中,但在我眼中(或者,鼻子)传递这种气味。它的代码级别低于其他代码。

有没有办法在控制器上下文中获取上一页的路由值?如果我有这个,我可以暂时存储并将其传递给重定向。

回答

2

Do not use TempData when not redirecting.来自您的编辑页面的一个AJAX请求,并且TempData将消失。

Tomas是正确的隐藏的元素或查询字符串参数是要走的路。但请确保您清理提交的值。您不想在网络上重定向任何旧网站;您需要确保您重定向的页面是您网站的一部分。

+0

我最终选择了这种方法,因为没有使用TempData的附加信息而接受了这个。 – 2009-02-08 21:02:18

1

您可以随时拥有一个隐藏的表单元素,告诉控制器发布表单时重定向的位置。当使用get请求时,可以以类似的方式使用查询字符串。它可能不是最漂亮的解决方案,但它比信任可以轻易被浏览器更改(或省略)的httpreferrer或其他标头要安全得多。