开发者

Render different view depending on the type of the data (asp.net MVC)

So lets suppose we have an action in a controller that looks a bit like this:

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

What I m trying to figure out开发者_运维技巧 is the best way to render a diferent view based on the type fo the data. the "_someService.GetData method returns an data that knows its out type (ie not only you can do typeof(data) but also you can do data.DataType and you ll get an enum value so I could achieve what I m trying to do doing something kinda like this

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;
   ...


}

But this does not seem to be the nicest way, (I dont event know if it would work) Is this the way to go? Should I use some sort of RenderPartial Aproach? after all , waht will change in the view is mostly the order of the data (ie the rest of the view would be quite similar) Cheers


Try this:

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

Then just name your views accordingly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜