型voidを暗黙的にオブジェクトに変換することはできません。.NET MVC PartialViewResult


90

次のコントローラーアクションがあります。

[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の違いは何ですか。Phil Haack氏は、RenderActionの方が効率的ですか?
MrBliz、2011

2
@ Doozer1979、ええ、まさに、それはRazorの方法です。
Darin Dimitrov、

これも機能します:{Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId));}、@を使用する必要はありません。
FrenkyB 2016


36

同じ問題がありました。私にとってうまくいったのは、表現を中括弧でカプセル化することです。

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


これは私にとってはうまくいきましたが、カーリングブラケットを追加することがなぜうまくいくのか私にはわかりません。詳しく説明していただけますか?
Brad Thiessen

1
@BradThiessenこれは、ASP.NET MVCが率直に言って、明白な穴と不十分な設計上の決定に満ちたお粗末なフレームワークであるためです。私もこれに出くわしました。誰が理由を知っていますが、私の忍耐力はMVCで薄く着ています。
user9993 2018年

10
@BradThiessen RenderPartial()は無効です。Razor を使用@して印刷すると、出力コンテンツが生成されないため不可能です。
S.Serpooshan

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.