не может неявно преобразовать тип void в объект. .NET MVC PartialViewResult


91

У меня есть следующее действие контроллера:

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

    return PartialView(actions);
}

И следующая ссылка на действие (с использованием t4MVC и синтаксиса бритвы)

<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? Фил Хаак говорит, что RenderAction более эффективен?
MrBliz

2
@ Doozer1979, да, именно так.
Дарин Димитров

Это также работает: {Html.RenderAction (MVC.MeetingActions.ListActions (Model.MeetingId));}, поэтому использовать @ нет необходимости.
FrenkyB 01


36

Я была такая же проблема. Что сработало для меня, так это инкапсулировать выражение в фигурные скобки .

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


Это сработало для меня, однако я понятия не имею, почему добавление скобок для завивки будет работать. Вы можете подробнее рассказать об этом?
Брэд Тиссен

1
@BradThiessen Это работает, потому что ASP.NET MVC, откровенно говоря, некачественный фреймворк, полный явных дыр и плохих дизайнерских решений. Я тоже только что наткнулся на это. Кто знает почему, но мое терпение с MVC истощается.
user9993

10
@BradThiessen RenderPartial()- это пустота, @вы говорите, что Razor напечатает его, что невозможно, так как он не производит никакого выходного контента!
S.Serpooshan

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.