所以假设我们在控制器中有一个看起来像这样的动作:
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吗?毕竟,在视图中更改将主要是数据的顺序(即视图的其余部分将非常相似) 干杯
答案 0 :(得分:3)
试试这个:
public ViewResult SomeAction(int id)
{
var data = _someService.GetData(id);
var viewModel = GetViewModel(data);
return View(data.GetType().Name, viewModel);
}
然后相应地命名您的观点。