在MVC4问题使用的RenderAction(actionname,价值观)(Using Rende

2019-07-17 20:15发布

我需要显示一些子对象( Items实体)的Request 。 相反,请求我发现它更好地在包含比原来的请求实体的详细信息视图通过。 这个观点我叫RequestInfo ,它也包含原始请求Id

然后在MVC查看我所做的:

@model CAPS.RequestInfo
...    
@Html.RenderAction("Items", new { requestId = Model.Id })

渲染 :

public PartialViewResult Items(int requestId)
{
    using (var db = new DbContext())
    {
        var items = db.Items.Where(x => x.Request.Id == requestId);
        return PartialView("_Items", items);
    }
}

这将显示一个泛型列表:

@model IEnumerable<CAPS.Item>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Code)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Description)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Qty)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Value)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Type)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Code)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Description)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Qty)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Value)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Type)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.Id }) |
            @Html.ActionLink("Details", "Details", new { id=item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.Id })
        </td>
    </tr>
}

</table>

但是,我得到一个编译器错误上RenderAction线“不能含蓄转换类型‘无效’到‘对象’”任何想法?

Answer 1:

您需要使用这个语法调用渲染方法时:

@{ Html.RenderAction("Items", new { requestId = Model.Id }); }

@syntax ,没有花括号,预计其获取呈现页面返回类型。 为了调用从页面返回void的方法,就必须包装在大括号呼叫。

请参看下面的链接进行了较为深入的解释。

http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx



Answer 2:

用地可供选择:

@model CAPS.RequestInfo
...    
@Html.Action("Items", new { requestId = Model.Id })

此代码返回MvcHtmlString。 工程与partialview和景观效果。 不需要{}字符。



文章来源: Using RenderAction(actionname, values) in MVC4 issue