我在控制器中有一个方法,我在其中传递查看具有不同类型的对象,如:
case ItemType.Magnets:
{
return View(dbHelper.Magnets.Details(id));
}
case ItemType.Maps:
{
return View(dbHelper.Maps.Details(id));
}
我如何为此写一个视图?
答案 0 :(得分:1)
您可能想要创建两个不同的视图,每个视图都称为唯一视图,每个视图都接受自己的视图模型。
您还需要在控制器类中指定视图名称:
return View("ViewName_1", dbHelper.Maps.Details(id));
或
return View("ViewName_2", dbHelper.Magnets.Details(id));
@AlexDefine,除非您想为内部所有类型的属性创建通用视图,这并不容易。
我在这里有一部分:
@model object
<table>
@{
var properties = from prop in ViewData.ModelMetadata.Properties
let propInfo = prop.ContainerType.GetProperty(prop.PropertyName)
where !ViewData.TemplateInfo.Visited(prop)
select prop;
}
@foreach (var prop in properties)
{
<tr>
<td>
<div style="float: right;">
@prop.GetDisplayName()
</div>
</td>
<td>
<div class="editor-field">
@Html.Editor(prop.PropertyName, new { ContainerModel = Model })
</div>
</td>
</tr>
}
</table>
或多或少,它制作了任何一种模型的表格。但你应该自己升级它以满足你的需求。
答案 1 :(得分:1)
您需要为不同的项目创建不同的视图。这是解决方案
case ItemType.Magnets:
{
return View("MagnetsView",dbHelper.Magnets.Details(id));
}
case ItemType.Maps:
{
return View("Maps",dbHelper.Maps.Details(id));
}
如果要显示磁铁项目,您需要创建磁铁视图。地图相同。