不能隐式地将类型void转换为对象..NET MVC PartialViewResult

MrB*_*liz 80 c# asp.net-mvc t4mvc asp.net-mvc-3

我有以下控制器操作:

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

    return PartialView(actions);
}
Run Code Online (Sandbox Code Playgroud)

以及以下操作链接(使用t4MVC和razor语法)

<p>
   @Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>
Run Code Online (Sandbox Code Playgroud)

但是这给了我错误:

不能隐式地将类型void转换为对象

至于我可以告诉控制器动作是好的,那么什么可以给我这个错误?

Dar*_*rov 116

像这样:

<p>
    @Html.Action(MVC.MeetingActions.ListActions(Model.MeetingId))
</p>
Run Code Online (Sandbox Code Playgroud)

或者如果你坚持RenderAction这样:

<p>
    @{Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId));}
</p>
Run Code Online (Sandbox Code Playgroud)

就个人而言,我更喜欢第一次,减少击键次数.

  • @ Doozer1979,是的,确切地说,这就是Razor的方式. (2认同)

Vla*_*adL 34

Html.Partial也应该工作:)

@Html.Partial("View", Model);
Run Code Online (Sandbox Code Playgroud)


Ewa*_*ald 29

我遇到过同样的问题.对我有用的是将表达式封装在大括号中.

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

  • @BradThiessen`RenderPartial()`是一个空白,使用`@`你说Razor打印它是不可能的,因为它不会产生任何输出内容! (6认同)
  • @BradThiessen 它之所以有效,是因为坦率地说,ASP.NET MVC 是一个劣质框架,充满了明显的漏洞和糟糕的设计决策。我也刚刚遇到过这个。谁知道为什么,我对 MVC 的耐心越来越少了。 (2认同)

Ahm*_*med 6

Html.RenderAction 和 Html.Action 的区别

不同的目的不同的东西。查看上面的链接。