簡而言之,我想簡化一些MVC頁面,方法是創建一個靜態類以從某種數據存儲中獲取數據,然後返回多個基於一些內部標誌的視圖。MVC3:從非控制器類返回視圖對象
internal static class StaticPageContent
{
internal static ViewModels.Display GetPage(string Map = null, int? ID = null) {...}
internal static ActionResult ReturnView(ViewModels.CMS.Display vm) {...}
}
然後,在我的任何控制器動作我可以叫它是這樣的:
public ActionResult ActionName()
{
var vm = StaticPageContent.GetPage("/Home");
return StaticPageContent.ReturnView(vm);
}
凡ReturnView()方法將返回多個(共享)的觀點之一:
internal static ActionResult ReturnView(ViewModels.CMS.Display vm)
{
if (vm.useLoremIpsum)
return View("LoremIpsum", vm);
else
{
if (vm.canEdit)
return View("ViewReadWrite", vm);
else
return View("ViewReadOnly", vm);
}
}
從非控制器類返回View(...)對象的正確方法是什麼?由於View(...)是Controller類的一部分,因此以上不會編譯。
注: 我相信我有這樣的工作,但給我發在另一個方向上我當時的需求了。我希望能夠打開這個項目,看看我做了什麼,並在這裏發佈。敬請關注!
我已經創建,希望能爲你指明正確的方向的東西:http://stackoverflow.com/questions/3808076/using-the-razor-view-engine-in- a-different-way/3815216#3815216 – Buildstarted