void 형식을 개체로 암시 적으로 변환 할 수 없습니다. .NET MVC PartialViewResult


91

다음과 같은 컨트롤러 작업이 있습니다.

[ChildActionOnly]
public virtual PartialViewResult ListActions(int id)
{
    var actions = meetingActionRepository.GetAllMeetingActions(id);

    return PartialView(actions);
}

그리고 다음 작업 링크 (t4MVC 및 razor 구문 사용)

<p>
   @Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>

그러나 이것은 나에게 오류를 제공합니다.

void 유형을 객체로 암시 적으로 변환 할 수 없습니다.

컨트롤러 동작이 정상이라고 말할 수있는 한,이 오류가 발생하는 원인은 무엇입니까?

답변:


126

이렇게 :

<p>
    @Html.Action(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>

또는 다음 RenderAction과 같이 주장한다면 :

<p>
    @{Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId));}
</p>

개인적으로 나는 첫 번째를 선호하고 더 적은 키 입력을 만듭니다.


1
감사합니다. 펑키 한 구문이 있습니다. 나는 그것이 <% = Html 대신 <% html을하는 면도칼 방법이라고 가정한다. 어쨌든 Action과 Renderaction의 차이점은 무엇입니까? Phil Haack은 RenderAction이 더 효율적이라고 말합니다.
MrBliz

2
@ Doozer1979, 예, 정확히 그것이 Razor 방식입니다.
Darin Dimitrov

이것은 또한 작동합니다 : {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, 그래서 @ 사용은 필요하지 않습니다.
FrenkyB


36

나는 같은 문제가 있었다. 나를 위해 일한 것은 식을 중괄호 로 캡슐화하는 것입니다 .

@{Html.RenderPartial("viewName", Model);}


이것은 나를 위해 일했지만 컬링 브래킷을 추가하는 것이 왜 효과가 있는지 모르겠습니다. 그것에 대해 자세히 설명해 주시겠습니까?
Brad Thiessen

1
@BradThiessen ASP.NET MVC는 솔직히 눈부신 구멍과 잘못된 설계 결정으로 가득 찬 조잡한 프레임 워크이기 때문에 작동합니다. 나도 이것도 만났다. 이유는 누가 알지만 MVC에 대한 인내심은 얇아지고 있습니다.
user9993

10
@BradThiessen RenderPartial()@출력 내용을 생성하지 않기 때문에 불가능한 인쇄를 위해 Razor를 사용 하면 무효입니다 !
S.Serpooshan 2018 년

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.