我有以下情况:
我有一个编辑页面,可以从不同的页面调用。这些页面可以是当前实体的详细视图,也可以是实体的列表视图(在路径中搜索或不搜索)。
如何使用MVC框架干净地重定向到原始调用页面?当然,我可以通过将它保存在我的TempData中来传递HttpContext.Request.Url值,但是那种气味,在我眼中(或者,错误,鼻子)。它的代码水平低于其他代码。
有没有办法在控制器上下文中获取上一页的路由值?如果我有这个,我可以暂时存储它并将其传递给重定向。
答案 0 :(得分:2)
Do not use TempData when not redirecting.来自编辑页面的一个AJAX请求,TempData将消失。
Tomas是正确的,隐藏元素或查询字符串参数是要走的路。但请确保您清理提交的值。您不想重定向网络上的任何旧网站;您需要确保您重定向的网页是您网站的一部分。
答案 1 :(得分:1)
您总是可以使用隐藏的表单元素告诉控制器在发布表单时重定向的位置。使用get请求时,您可以以类似的方式使用查询字符串。它可能不是最漂亮的解决方案,但它比信任httpreferrer或浏览器可以轻松更改(或省略)的其他标题要安全得多。