【问题标题】:cannot implicitly convert type void to object. .NET MVC PartialViewResult不能将类型 void 隐式转换为对象。 .NET MVC PartialViewResult
【发布时间】:2011-06-23 02:11:36
【问题描述】:

我有以下控制器操作:

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

    return PartialView(actions);
}

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

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

但是这给了我错误:

无法将类型 void 隐式转换为对象

据我所知,控制器操作没问题,那么什么可能给我这个错误?

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 t4mvc


    【解决方案1】:

    像这样:

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

    或者如果你坚持RenderAction 像这样:

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

    我个人更喜欢第一个,减少击键次数。

    【讨论】:

    • 谢谢。那里有时髦的语法。我认为这是做
    • @Doozer1979,是的,没错,这就是 Razor 的方式。
    • 这也有效:{Html.RenderAction(MVC.MeetingActions.ListActions(Model.MeetingId));},所以不需要使用@。
    【解决方案2】:

    Html.Partial 应该也可以工作:)

    @Html.Partial("View", Model);
    

    【讨论】:

      【解决方案3】:

      我有同样的问题。对我有用的是将表达式封装在花括号中。

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

      【讨论】:

      • 这对我有用,但是我不知道为什么添加花括号会起作用。你能详细说明一下吗?
      • @BradThiessen 它之所以有效,是因为 ASP.NET MVC 坦率地说是一个充满明显漏洞和糟糕设计决策的劣质框架。我也刚遇到这个。谁知道为什么,但我对 MVC 的耐心已经消耗殆尽。
      • @BradThiessen RenderPartial() 是无效的,使用 @ 你说 Razor 打印它是不可能的,因为它不会产生任何输出内容!
      【解决方案4】:

      Difference between Html.RenderAction and Html.Action

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-05
        • 2014-07-29
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 2014-04-14
        • 2016-02-17
        • 2015-04-26
        相关资源
        最近更新 更多