2013-11-04 66 views
20

我從MVC5開始,並從MVC5 Getting Started創建第一個項目。MVC5 Html.RenderAction與不同的控制器

現在,隨着部分呈現嘗試,加入MoviesController方法如下

[ChildActionOnly] 
public ActionResult PriceRange() 
{ 
    var maxprice = db.Movies.Max(m => m.Price); 
    var minprice = db.Movies.Min(m => m.Price); 
    ViewBag.MaxPrice = maxprice; 
    ViewBag.MinPrice = minprice; 
    return PartialView(); 
} 

它規定從電影到收藏這ViewBag稍後在視圖中顯示的最小和最大的代價。我試圖用不同的觀點來呈現它。

首先我試圖在Views/Movies/Index.cshtml以使其如下

@{Html.RenderAction("PriceRange");} 

它運作良好那裏和的結果,因爲它是使用MoviesController,其中定義的方法PriceRange同一類正確顯示。

然後我試圖在Views/Hello/Index.cshtml以使其(這個視圖是使用HelloWorldController)用下面的代碼(第一傳遞行動名字然後控制器名稱)

@{Html.RenderAction("PriceRange", "MoviesController");} 

這是給運行時錯誤

路徑'/ HelloWorld/Index'的控制器未找到或未實現IController。

下面是完整的代碼查看/你好/ Index.cshtml

@{ 
    ViewBag.Title = "Movie List"; 
} 
<h2>My Movie List</h2> 
<p>Hello from our view template</p> 
@{Html.RenderAction("PriceRange", "MoviesController");} 

我發現通過谷歌幾個例子,他們在呼喚幫手的RenderAction以同樣的方式,首先通過動作名稱,然後控制器名稱。

我不明白我在這裏做錯了什麼。 有人可以指出嗎?

回答

47

這可能是您將「Controller」後綴添加到不需要的控制器名稱。

嘗試:

@{Html.RenderAction("PriceRange", "Movies");} 
+3

@ Html.Action不用花括號。 – Jordan

1

控制器名稱必須是 「電影」,而不是 「MoviesController」。因爲現在我相信它正在尋找一個名爲「MoviesControllerController」的控制器。

相關問題