需要有关如何构建asp mvc razor页面的建议

时间:2011-09-02 05:59:12

标签: asp.net-mvc razor

enter image description here 我有一个页面,其中包含大量数据。 页面轮廓在图像上。 对于输出我使用了“剃刀”引擎。

  • 现在我想知道如果我重构我的代码,我会得到一些东西 哪些数据来自数据库将是部分视图?
  • 在此页面上,我需要大约20个值对象来显示所有需要的数据。

我制作了一个“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;
}

2 个答案:

答案 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上的属性作为构成每个部分的部分视图的输入。