2010-09-06 139 views
2

我正在开发asp.net mvc2。我开始创建很多观点和部分视图,其中大部分我必须创建一个视图模型。这看起来很快,要记住什么样的观点与什么模式有关,将变得难以管理。我试图尽可能地在我的视图模型中使用继承。如何组织视图,局部视图及其视图模型?

我想知道别人如何在他们的项目中管理这个?

回答

1

我将我的PV放置在Views文件夹中的PV文件夹中。

so Views/Home/PartialViews;

然后我在我的global.asax文件中注册该路径;

public static void RegisterViewEngine() 
    { 
     ViewEngines.Engines.Clear(); 

     WebFormViewEngine viewEngine = new WebFormViewEngine(); 

     viewEngine.PartialViewLocationFormats = (new[] { 
      "~/Views/Shared/PartialViews/{0}.ascx", 
      "~/Views/{1}/PartialViews/{0}.ascx" 
      }).Concat(viewEngine.PartialViewLocationFormats).ToArray(); 

     ViewEngines.Engines.Add(viewEngine); 
    } 

我也倾向于将FormViewModels放在视图文件夹中。

/Views/Home/IndexFormViewModel.cs 

以上是最近的,因为这我把它们放在一个模型项目,但有时也会发现,我可以用我的模型和DataRepository一个循环引用情况结束之前。

+0

手动注册部分视图有什么好处? – Roman 2010-09-06 05:41:54

+0

你不是。您正在将位置注册到PartialViews。在上面的代码中,{1}是指像/ Home或/ ContactMe等视图。然后,您可以将PV放在PartialViews文件夹中,而不必在视图中的路径中编码。这是个好消息,因为您可以将PV从/ home/PartialViews文件夹拖到Shared/PartialViews文件夹,而不必更改任何代码。 – griegs 2010-09-06 05:53:55

+0

我应该补充说,你不要在“〜/ Views/Home/PartialViews/MyPV.ascx”中编码。您按原样编码“〜/ Views/{1}/PartialViews/{0} .ascx” 。 – griegs 2010-09-06 05:57:53