我正在构建一个 cms,在一个部分的编辑屏幕上,您可以编辑多种类型的页面,网址需要保持自然,如下所示:
foob
ar.com/edit/section/my-content-page-name foobar.com/edit/section/my-gallery-page-name
foobar.com/edit/section/my-blog-page-name
在这种情况下,索引操作用于获取和发布。
目前我有一个庞大的 ViewModel,它包含所有页面类型所需的所有数据。
我觉得这是非常错误的,并且为决定帖子上的页面更新类型提供了一个丑陋的解决方案。
如何保持 Action 不变,但将其与不同的强类型 ViewModel 一起使用?
这甚至可能吗?
public ActionResult Index(string page)
{
var model = _pageManager.GetSection(page, SelectedSite);
return View(model.PageType, model);
// renders appropriate View based on page type.
}
[Transaction]
[HttpPost]
[ValidateInput(false)]
public ActionResult Index(SectionIndexViewModel model)
{
// all page types post back to same action to update content etc.
// at this point SectionIndexViewModel is getting bloated with properties because it must cater for ALL page types data.
var action = Request["action"] ?? "";
// currently use this to determine what event has been triggered
switch (action.ToLower())
{
// then goes to update the appropriate page, blog or gallery
// etc.