2013-11-04 4 views
20

MVC5부터 시작하여 MVC5 Getting Started에서 첫 번째 프로젝트를 만들었습니다. 다른 컨트롤러를 사용하는 MVC5 Html.RenderAction

는 지금 나중에보기에 표시됩니다 ViewBag에 영화 컬렉션에서 최소 및 최대 가격을 설정

[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(); 
} 

아래로 MoviesController의 방법을 부분 렌더링으로 노력하고 덧붙였다. 다른 견해에서 렌더링하려고합니다.

먼저 내가

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

그것은 잘가 작동하고 MoviesController, 방법 PriceRange 정의 같은 클래스를 사용하고 있기 때문에 결과가 제대로 표시 아래와 같이 Views/Movies/Index.cshtml에 그것을 렌더링하기 위해 노력했다.

그럼 내가 (다음 컨트롤러 이름 첫 액션 이름을 전달)

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

는 런타임 오류

을주고있다 코드를 다음과 같이 (이 뷰가 HelloWorldController을 사용) Views/Hello/Index.cshtml 그것을 렌더링하려

경로 '/ HelloWorld/Index'의 컨트롤러가 없거나 IController를 구현하지 않습니다.

는 여기에 내가 구글을 통해 몇 가지 예, 그들은 먼저 컨트롤러 이름을 조치 이름을 전달, RenderAction 도우미 같은 방법으로 호출 발견/조회/안녕하세요 Index.cshtml

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

전체 코드입니다.

내가 여기서 뭘 잘못하고 있는지 이해할 수 없었습니다. 누군가 지적 할 수 있습니까?

답변

47

필요하지 않은 컨트롤러 이름에 "컨트롤러"접미사를 추가했을 수 있습니다.

시도 :

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

@ Html.Action은 중괄호없이 이것을 수행합니다. – Jordan

1

컨트롤러 이름은 "영화"가 아니라 "MoviesController"할 필요가있다. 왜냐하면 지금은 "MoviesControllerController"라는 컨트롤러를 찾고 있다고 생각하기 때문입니다.

관련 문제