Asp.net mvc 根据数据类型呈现不同的视图(asp.net MVC)
假设控制器中有一个动作,看起来有点像这样:Asp.net mvc 根据数据类型呈现不同的视图(asp.net MVC),asp.net-mvc,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); } 我试图找出的是基于数据类型呈现不同视图的最佳方法。 “\u someService.GetData方法返回一个知道其输
public ViewResult SomeAction(int id)
{
var data = _someService.GetData(id);
...
//create new view model based on the data here
return View(viewModel);
}
我试图找出的是基于数据类型呈现不同视图的最佳方法。
“\u someService.GetData方法返回一个知道其输出类型的数据(即,不仅可以执行typeof(data),还可以执行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;
...
}
但这似乎不是最好的方法,(我不知道它是否有效)
这是路吗?
我应该使用某种渲染部分方法吗?毕竟,视图中的哪些变化主要取决于数据的顺序(即视图的其余部分将非常相似)
干杯试试这个:
public ViewResult SomeAction(int id)
{
var data = _someService.GetData(id);
var viewModel = GetViewModel(data);
return View(data.GetType().Name, viewModel);
}
然后,只需相应地命名视图。如果GetViewModel(data)是动态的,则无法工作,您需要创建视图,然后为其指定一个视图名称以工作(否则会出现一个错误,提示最好的重载是视图(string,string)