根据数据类型呈现不同的视图(asp.net MVC)

时间:2010-05-24 07:41:15

标签: asp.net-mvc

所以假设我们在控制器中有一个看起来像这样的动作:

public ViewResult SomeAction(int id)
{
    var data = _someService.GetData(id);
    ...
    //create new view model based on the data here
   return View(viewModel);
}

我想弄清楚的是根据数据类型渲染不同视图的最佳方法。 “_someService.GetData方法返回一个知道其输出类型的数据(即不仅可以执行typeof(数据),而且还可以执行data.DataType,并获得枚举值 所以我可以实现我想要做的事情,比如这样做

public ViewResult SomeAction(int id)
{
    var data = _someService.GetData(id);

    //mapping fields to the viewModel here
    var viewModel = GetViewModel(data); 

   swtich(data.DataType) 
     case DataType.TypeOne:  return View("TypeOne", viewModel); break;
   ...


}

但这似乎不是最好的方式,(我不知道它是否会起作用) 这是要走的路吗? 我应该使用某种RenderPartial Aproach吗?毕竟,在视图中更改将主要是数据的顺序(即视图的其余部分将非常相似) 干杯

1 个答案:

答案 0 :(得分:3)

试试这个:

public ViewResult SomeAction(int id)
{
    var data = _someService.GetData(id);
    var viewModel = GetViewModel(data); 
    return View(data.GetType().Name, viewModel);
}

然后相应地命名您的观点。