2013-10-09 33 views
22

執行的處理子請求我有一個MVC 4觀點,我作出以下行爲錯誤鑑於

@{ 
    Html.RenderAction("Index", "Logo"); 
    Html.RenderAction("Index", "MainMenu"); 
} 

我有我的看法這是填寫並貼到控制器的形式。在控制器我執行一些任務,然後把模型回到我的看法

[HttpPost] 
public ActionResult Index(ManageAdministratorModel manageAdministratorModel) 
{ 
    // I save some of the fields to the database here. 
    return View(manageAdministratorModel); 
} 

當我重定向到我收到以下錯誤觀點

執行的處理子請求錯誤「系統.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper」。

在這條線

Html.RenderAction("Index", "Logo"); 

任何想法,爲什麼發生這種情況

+0

重要提示:錯誤消息的引用更好,而不是代碼塊(我的編輯) – musefan

+0

謝謝將記住 – user65439

回答

25

好的,我發現問題,希望這將有助於未來的人。

部分視圖的控制器每個都包含[HttpGet]屬性。例如

[HttpGet] 
public ActionResult Index() 
{ 
} 

我從兩個控制器

public ActionResult Index() 
{ 
} 

刪除屬性和一切工作了。

+1

不錯。我遇到了一個類似的問題,使用這些信息解決了這個問題。 –

+16

[HttpGet]爲什麼會阻止它工作? – tony09uk

+0

thx很多你保存我的時間..我保持[HttpPost]。我現在刪除它的工作 – Asad

7

替換:

return View(manageAdministratorModel); 

有:

return PartialView(manageAdministratorModel); 

否則你可能在一個無限循環,因爲你是渲染這是爲了顯示其試圖呈現一個視圖中的視圖來結束查看,...

此外,您可能需要從您的子動作中刪除[HttpPost]屬性。

+0

我改變了代碼,但它仍然給我同樣的錯誤。 – user65439

+0

哦,等一下。您的控制器操作使用'[HttpPost]'屬性進行裝飾。擺脫它。對於兒童行爲,不應該有這樣的屬性。 –

+0

當我刪除[HttpPost]屬性並添加[ChildActionOnly]屬性時,我得到一個「操作'索引'只能由子請求訪問。」錯誤。 – user65439

20

我剛剛在我的剃鬚刀裏發生了這個錯誤,當我的部分視圖有一個代碼格式錯誤。

如果您點擊「繼續」以查看錯誤,您會看到顯示在您從中加載的瀏覽器窗口中顯示的實際錯誤消息。

糾正部分視圖中的錯誤,它會起作用!

+0

這幫助了我,我試圖在它不喜歡的部分中添加css和腳本部分。坦克@Luke –

2

的「兒童行動只是」例子是:

 public class FiltersController : Controller 
    { 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     [ChildActionOnly] 
     public ActionResult Departments() 
     { 
      string s = "Mahi and kallu"; 
      return View(s); 
     } 

    } 

**for this am creating 2 views** 
1) Index: 

    <html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index</title> 
</head> 
<body> 
    <div> 
     @Html.Partial("Departments","Filters") 

</body> 
</html> 
**and for Departments View:** 
<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Departments</title> 
</head> 
<body> 
    <div> 
     @Model  
    </div> 
</body> 
</html> 


the ***childactions*** can be rendered with the help of "Partial" keyword. 
0

我有完全一樣的問題,因爲我用屬性的路由,內部異常錯誤信息是:

No matching action was found on controller ''. 
This can happen when a controller uses RouteAttribute for routing, 
but no action on that controller matches the request. 

從Html.Action()調用的操作方法中移除[HttpGet]屬性,並且它起作用。與路由無關。

0

我有同樣的錯誤。它開始於我將操作更改爲另一個控制器時,因此運行程序時無法在文件夾中找到該視圖。 因此,如果您將某個操作移至其他控制器,還可將該視圖移至相應文件夾的控制器

0

我得到了這個錯誤,但我的問題是不同的。 要看到的是有關該錯誤,涉及行,你得到該錯誤的嘗試捕捉代碼中,像這樣:

try 
    {   
     @Html.RenderAction("Index", "Logo", new {id = Model.id}); 
    } 
    catch (Exception e) 
    { 
     throw; 
    }  

與罰球線一個破發點,執行它,並選中「e的內部異常」。 我的問題是,我改變了我的控制器上的參數名稱,並忘記在我的視圖中更改它。

使用try catch可以更容易地得到錯誤。

1

擺脫子視圖中的佈局@{ Layout = null; }

+0

這實際上幫了我,我在我的partialview導致這個錯誤的Layout = null。 –

0

我面臨同樣的問題,但我把[HTTPGet]屬性放在函數名上,它對我很有用。

[HttpGet] 
//for Filter parital view 
[ChildActionOnly] 
public ActionResult Filter() 
{ 
    // Your code will come here. 
} 
1

我有這個問題,這可能發生,因爲渲染引擎無法找到任何視圖(對應於在阿克頓給出的名字)我放棄的觀點錯了名字(我錯誤地給了動作名稱而不是視圖名稱)當我使用PartialView()方法返回視圖名稱和視圖模型時,我更正了我的視圖名稱並且它工作正常