2011-02-07 22 views
66

mam następujące działania kontrolera:nie można niejawnie przekonwertować typu void na obiekt. .NET MVC PartialViewResult

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

    return PartialView(actions); 
} 

a poniższy link działania (używając t4MVC i składnię brzytwa)

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

Jednak to daje mi błąd:

cannot implicitly convert type void to object

O ile mogę powiedzieć, że działanie kontrolera jest ok, to co może dać mi ten błąd?

Odpowiedz

104

Jak to:

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

lub jeśli nalegać na RenderAction tak:

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

Osobiście preferuję pierwszy sprawia, że ​​mniej klawiszy.

+1

Dziękuję. Funkcjonalna składnia. Zakładam, że to brzytwa sposób robienia <% html zamiast <% = Html? Jaka jest różnica między Actionem a Renderaction. Phil Haack mówi, że RenderAction jest bardziej wydajny? – MrBliz

+2

@ Doozer1979, tak, dokładnie, to jest sposób Razor. –

+0

Działa to również: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, więc użycie @ nie jest konieczne. – FrenkyB

9

miałem ten sam problem. To, co zadziałało, to zamknięcie wyrażenia w nawiasach klamrowych .

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

+1

jeden zbędny) przed; –

+0

Usuwam wspornik. Dzięki! – Ewald

Powiązane problemy