簡體   English   中英

MVC5 Html.RenderAction與不同的控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM