我有一个页面,其中包含大量数据。 页面轮廓在图像上。 对于输出我使用了“剃刀”引擎。
我制作了一个“ViewModel”类,其中包含我需要的所有数据并进行设置 viewModel类作为剃刀页面模型。这是我应该如何做到这一点的正确方法 还有一些更聪明的方法吗?
public class MyViewModelClass{
public ValueObjectx x;
public ValueObjecty y;
public ValueObjectz z;
public List<ValueObjectT> tList;
public List<ValueObjectG> gList;
public List<ValueObjectS> sList;
}
答案 0 :(得分:4)
在这样的场景中,我通常将每个部分都视为局部视图。每个部分都负责它自己的布局和ViewModel。这可以防止出现超级视图的趋势,该视图必须知道太多的东西才能呈现。
答案 1 :(得分:1)
我不会将一个ViewModel用于所有数据。我只会将ViewModel用于可能实际发布回服务器的数据。对于所有其他数据,例如列表,我会将其放在ViewBag
上。像:
public ViewResult SomeAction()
{
var model = GetYourModelData();
ViewBag.TList = GetTList();
ViewBag.GList = GetGList();
ViewBag.SList = SList();
return View(model);
}
如果您经常使用它们,可以将所有列表放在单独的帮助程序对象中。
请注意,这不是“这就是你应该如何回答”,它更多地描述了什么对我有用。但正如我所看到的那样,视图的模型是一回事,视图中的实际数据(如下拉数据等)是另一回事,应该放在ViewData
属性中,但是{{1只是围绕ViewBag
属性的动态包装器。然后,您可以使用ViewData
上的属性作为构成每个部分的部分视图的输入。