c#mvc model vs viewbag

Sha*_*kan 11 c# asp.net-mvc partial-views viewbag

假设您在页面中有人员A列表和人员B列表.这两个是L2S中的单独类,代表两个不同的表.因此,您无法传递单个模型,如下所示:

...
@model PeopleA
...
@foreach(var peopleA in Model.People) ...

@foreach(var peopleB in //what?)
Run Code Online (Sandbox Code Playgroud)

因此,我想,我有三个选择可以遵循.

  • 第一个是将页面分成部分视图,以便我可以通过RenderAction帮助程序传递模型.因为我只会使用这些部分视图一次此选项似乎不吸引我.
  • 第二种选择是使用我不想要的ViewBags,因为我更喜欢强类型模型.
  • 最后一个,最后,我将要使用但想在此之前询问,是创建一个模型如下:

ModelMyPage.cs

public List<PeopleA> peopleA { get; set; }
public List<PeopleB> peopleB { get; set; }
Run Code Online (Sandbox Code Playgroud)

MyController.cs

... 
ModelMyPage m = new ModelMyPage();
m.peopleA = // query
m.peopleB = // another query
return(m);
Run Code Online (Sandbox Code Playgroud)

你明白了.这是完成我的任务的有效方法还是有更好的c#方式来做我想要的?

Ode*_*ded 17

创建一个特定于页面的ViewModel,因为你的选择3是我的方式.

我相信这也是推荐的方法.


arc*_*hil 8

不,没有更好的主意.在asp.net MVC中,M代表ViewModels,而不是Business,Domain模型.建议您为视图创建ViewModel,并且不建议使用Business Models.您应该设计ViewModel以满足控制器与Domain交互的需要,并从控制器到查看交互