не може неявно перетворити тип 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


36

У мене була та сама проблема. Що мені вдалося, це інкапсулювати вираз у фігурні дужки .

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


Це працювало для мене, однак я не уявляю, чому додавання фігурних дужок буде працювати. Чи можете ви детальніше це сказати?
Бред Тіссен,

1
@BradThiessen Це працює, тому що ASP.NET MVC - цілком відверто неякісний фреймворк, повний кричущих дір і поганих дизайнерських рішень. Я теж натрапив на це теж. Хто знає чому, але моє терпіння не в курсі MVC.
user9993

10
@BradThiessen RenderPartial()- це порожнеча, якщо @ви скажете, що бритва надрукує її, що неможливо, оскільки вона не дає жодного вихідного вмісту!
S.Serpooshan

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.