我应该在哪里将子结构放在MVC控制器中

时间:2012-08-07 09:45:39

标签: asp.net-mvc asp.net-mvc-3

我正在尝试构建一个控制器,使用户能够在项目中添加/删除子内容。

把它想象成一个文档,你可以在其中添加不同类型的部分,比如标题,段落,图像等(它们各自都有自己的属性,所以它们在SQL中的单独表中)

我的问题是我应该在哪里放置代码来处理这个“文档控制器”中的不同类型的子部分?

它们都通过数据库关系附加到这个“文档”/实体,但是我应该为每种类型制作一个“crudl”控制器,还是应该做一个基础有点的crudl然后让它们都继承这个?

我研究过“模特”和“服务层” - 这是正确的方法吗?

我仍然是MVC的新手,使用C#和ASP.net我希望有人给我一个正确方向的提示。

的Nb。请告诉我是否应该重新解释这个问题。不知道该问什么才能在这里得到正确答案。

规格:如果需要,我使用EF 4.x和MVC3将升级到最新版本。

希望得到一些聪明的答案或指导。在此先感谢大家。是的,我也试过谷歌。不知道要搜索什么,所以我来到这里。

1 个答案:

答案 0 :(得分:1)

  

我应该在哪里放置代码来处理这个“documentcontroller”中的不同类型的子部分?

此代码将最终进入控制器操作,然后您可以相应地处理和更新数据库。有多种方法可以做到这一点,你可以是通用的,例如。

[HttpPost]
public ActionResult AddSection(string type)
{
    switch (type)
    {
        case "HEADING":
            // add new heading to database
        case "PARAGRAPH":
            // add new paragraph to database      
    }
    return View(type);
}

或者你可以是具体的,例如。

[HttpPost]
public ActionResult AddHeadingSection()
{
    // add to db
    return View("Heading");
}

[HttpPost]
public ActionResult AddParagraphSection()
{
    // add to db
    return View("Parapgraph");
}

以上只是伪代码,可以让您大致了解如何以最小的努力完成它。在现实生活中,你可能会发布额外的信息,例如: AddHeadingSection(HeadingModel model)。这取决于你如何实现这一目标。

另外,你可能想考虑使用AJAX而不是完整的回发,这会让你的应用程序更加流畅。