22

Itemsエンティティのいくつかの子オブジェクト () を表示する必要がありますRequest。Request の代わりに、元の Request Entity よりも多くの情報を含むビューを渡す方がよいことがわかりました。私が呼び出したこのビューにRequestInfoは、元の Requests も含まれてい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>

しかし、 「型 'void' を 'object' に暗黙的に変換できません」RenderActionという行でコンパイラ エラーが発生します。

4

2 に答える 2

15

便利な代替:

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

このコードは MvcHtmlString を返します。部分ビューとビューの結果で動作します。{} 文字は必要ありません。

于 2013-11-03T21:25:42.953 に答える