[英]MVC5 Html.RenderAction with different controller
我從MVC5開始,並從MVC5入門創建了第一個項目。
現在嘗試使用Partial Rendering並在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
)中使用以下代碼呈現它(首先傳遞Action名稱然后傳遞Controller名稱)
@{Html.RenderAction("PriceRange", "MoviesController");}
這里給出了運行時錯誤
未找到路徑'/ HelloWorld / Index'的控制器或未實現IController。
這是來自Views / Hello / Index.cshtml的完整代碼
@{
ViewBag.Title = "Movie List";
}
<h2>My Movie List</h2>
<p>Hello from our view template</p>
@{Html.RenderAction("PriceRange", "MoviesController");}
我通過Google找到了一些例子,他們以相同的方式調用RenderAction助手,首先傳遞Action名稱然后傳遞Controller名稱。
我無法理解我在這里做錯了什么。 有人可以指出嗎?
可能是您將“Controller”后綴添加到控制器名稱中,這不是必需的。
嘗試:
@{Html.RenderAction("PriceRange", "Movies");}
控制器名稱必須是“電影”而不是“MoviesController”。 因為現在我相信它正在尋找一個名為“MoviesControllerController”的控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.