C# 将不同类型传递给视图

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 您还需要在控制器类中指定视

我在Controller中有一个方法,通过该方法可以查看不同类型的对象,如:

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));
}