我将应用程序类保存在一个名为“ Core”(或单独的类库)的子文件夹中,并使用与KIGG示例应用程序相同的方法,但进行了一些细微更改以使我的应用程序更加干燥。
我在/ Core / ViewData /中创建一个BaseViewData类,在其中存储通用的站点范围属性。
此后,我还将在同一文件夹中创建所有视图ViewData类,然后从BaseViewData派生并具有视图特定的属性。
然后,我创建一个ApplicationController,我所有的控制器都派生自该控制器。ApplicationController具有通用的GetViewData方法,如下所示:
protected T GetViewData<T>() where T : BaseViewData, new()
{
var viewData = new T
{
Property1 = "value1",
Property2 = this.Method() // in the ApplicationController
};
return viewData;
}
最后,在我的Controller动作中,我执行以下操作来构建ViewData模型
public ActionResult Index(int? id)
{
var viewData = this.GetViewData<PageViewData>();
viewData.Page = this.DataContext.getPage(id); // ApplicationController
ViewData.Model = viewData;
return View();
}
我认为这确实非常有效,并且可以使您的视图保持整洁,并使控制器瘦身。