Ich muss einige untergeordnete Objekte (Items
) einer Entität Request
anzeigen. Anstelle von Request fand ich es besser, eine View zu übergeben, die mehr Informationen enthält als die ursprüngliche Request Entity. Diese Ansicht nannte ich RequestInfo
, sie enthält auch die ursprünglichen Anfragen Id
.Verwenden von RenderAction (Aktionsname, Werte) in MVC4 Problem
Dann in der MVC-Ansicht Ich habe:
@model CAPS.RequestInfo
...
@Html.RenderAction("Items", new { requestId = Model.Id })
Um Render:
public PartialViewResult Items(int requestId)
{
using (var db = new DbContext())
{
var items = db.Items.Where(x => x.Request.Id == requestId);
return PartialView("_Items", items);
}
}
, die eine generische Liste angezeigt werden würde:
@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>
Aber ich bin immer einen Compiler-Fehler auf der RenderAction
Linie "Kann nicht konvertieren Typ 'void' in 'o bject '" Irgendwelche Ideen?
+1: Gleichwertige Antwort und bessere Anzüge Razor Syntax. Das braucht mehr Stimmen :) –