C# 将不同类型传递给视图
我在Controller中有一个方法,通过该方法可以查看不同类型的对象,如:C# 将不同类型传递给视图,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我在Controller中有一个方法,通过该方法可以查看不同类型的对象,如: case ItemType.Magnets: { return View(dbHelper.Magnets.Details(id)); } case ItemType.Maps: { return View(dbHelper.Maps.Details(id)); } 如何为此编写视图?您可能需要创建两个不同的视图,每个视图称为“唯一”,每个视图都接受自己的viewmodel 您还需要在控制器类中指定视
case ItemType.Magnets:
{
return View(dbHelper.Magnets.Details(id));
}
case ItemType.Maps:
{
return View(dbHelper.Maps.Details(id));
}
如何为此编写视图?您可能需要创建两个不同的视图,每个视图称为“唯一”,每个视图都接受自己的viewmodel 您还需要在控制器类中指定视图的名称:
return View("ViewName_1", dbHelper.Maps.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>
@model对象
@{
var properties=来自ViewData.ModelMetadata.properties中的prop
让propInfo=prop.ContainerType.GetProperty(prop.PropertyName)
其中!ViewData.TemplateInfo.Visited(道具)
选择道具;
}
@foreach(属性中的var属性)
{
@prop.GetDisplayName()
@编辑器(prop.PropertyName,新的{ContainerModel=Model})
}
或多或少,它构成了一个表格的任何类型的模型。但是您应该根据自己的需要进行升级。您需要为不同的项目创建不同的视图。这里是解决方案
case ItemType.Magnets:
{
return View("MagnetsView",dbHelper.Magnets.Details(id));
}
case ItemType.Maps:
{
return View("Maps",dbHelper.Maps.Details(id));
}
如果要显示磁铁项目,需要创建磁铁视图。地图也是如此。如果磁铁和地图都是子类并且继承自同一基类,那么您可以为此创建视图。否则,我不知道,我认为不同类型的视图不应该相同。
Details(id)
返回的类型相同吗?我知道,但我正在寻找更快的方法。。在您的情况下,我需要为每种产品类型创建12个视图,这太多了。
case ItemType.Magnets:
{
return View("MagnetsView",dbHelper.Magnets.Details(id));
}
case ItemType.Maps:
{
return View("Maps",dbHelper.Maps.Details(id));
}