Bor*_*ens 7 asp.net-mvc cross-controller-redirect
我想从一个控制器中的操作重定向到第二个控制器中的操作.通常我会使用RedirectToAction("actionName","controllerName",对象); 我想重定向到的方法有两个重载:
当我使用RedirectToAction方法进行重定向时,默认情况下会重定向到GET方法,当然这与我的参数不匹配.
如何确保重定向到正确的操作过载?
--EDIT--
根据要求提供一些更具体的细节:
我想重定向的动作根据参数填充viewData,然后调用正确的视图.
public ActionResult OverView(SearchBag searchBag, IngredientBag ingredientBag) {
Run Code Online (Sandbox Code Playgroud)
它有第二个版本的Get,所以它也可以通过GET工作:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult OverView(int colorId, string paintCode, string name, int formulaId) {
return OverView(new SearchBag()
{ ColorId = colorId, PaintCode = paintCode, ColorName = name, FormulaId = formulaId }
, formulaViewData.IngredientBag);
}
Run Code Online (Sandbox Code Playgroud)
我现在打电话的是一个不同的控制器.它进行一些预先计算,获取所需的信息,然后执行与先前操作完全相同的操作.我可以从第一个动作复制代码,但我宁愿只是调用该动作.
[AcceptVerbs(HttpVerbs.Post)]
public RedirectToRouteResult ReCalculate(SearchBag searchBag, IngredientBag ingredientBag) {
Run Code Online (Sandbox Code Playgroud)
我可以创建下一个控制器的临时本地实例,但我注意到它没有正确的HTTPContext并且没有点击初始化方法.
您不能使用 RedirectToAction (或其他任何东西)使浏览器使用 HTTP POST 进行重定向。你也许可以用一些 JavaScript 来破解它,但它会很丑陋。
如果您可以提供有关您希望将用户重定向到的目标操作的更多详细信息,我们可以为您提供更好的答案。请使用目标操作的签名以及您想要提供的参数值的详细信息来更新您的问题,以便人们可以提供适当的指导。
我猜您想要做的是将一些数据存储在 TempData 中,调用 RedirectToAction,从目标控制器/操作中的 TempData 加载并进行处理。
有关 TempData 的更多信息,请参阅以下问题;http://www.google.com/search?q=tempdata+site%3Astackoverflow.com
| 归档时间: |
|
| 查看次数: |
6263 次 |
| 最近记录: |