5
我有一個動作列表MVC3爲什麼我會收到「子操作不允許執行重定向操作」錯誤?
//[HttpGet] (will come back to that!)
public ViewResult List(int page = 1)
{
//blah blah blah
return View(viewModel);
}
在其看來,我們渲染動作:
@{
Html.RenderAction("UpdateSearch");
}
行動的定義:
[ChildActionOnly]
[HttpGet]
public PartialViewResult UpdateSearch()
{
// do something and display a form in view
return PartialView(so);
}
[HttpPost]
public RedirectToRouteResult UpdateSearch(Options searchOptions)
{
// do something and redirect to List
return RedirectToAction("List");
}
和我越來越:兒童行動不準每次有人提交表單時都會執行重定向操作異常。我是MVC3的新手,但它看起來像重定向也是一個POST,因爲如果上面的List方法的[HttpGet]未被註釋爲「找不到資源」,就會發生。
如何更改重定向的Http方法還是我做錯了什麼?我確實嘗試了Bing,但沒有成功。
這是有道理的,但我的示例中的重定向不是通過帶有[ChildActionOnly]註釋的方法完成的。問題是,當[HttpPost] UpdateSearch重定向到List時,它會與POST重定向,因此[HttpPost]方法(試圖)用於視圖中的部分生成。我可以使用RouteValueDictionary改變它嗎? – 2012-03-20 15:34:06
向我們展示局部視圖的內容。這個問題可能在於BeginForm中的錯誤路由定義,但是如果沒有看到視圖,我不能說出來。 – 2012-03-20 15:52:46
你說得對。 爲了修正它,它足以動作參數在UpdateSearch視圖(獲取,兒童版本),所以從變化添加到BeginForm方法: /@使用(Html.BeginForm()){ 到: /@使用(Html.BeginForm(「UpdateSearch」)){ 修復了這個問題。你能解釋爲什麼嗎? – 2012-03-20 16:03:03