2012-08-07 82 views
0

我试图构建一个控制器,使用户能够将子内容添加到项目中或将其删除。我应该在MVC控制器中放置子结构

认为它像一个文件,你可以添加不同类型的部分,如标题,段落,图像等。(他们每个人都有自己的特征,使它们在单独的表中的SQL)

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

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

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

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

Nb。请让我知道如果我应该改写这个问题。不知道该问什么才能在这里得到正确的答案。

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

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

回答

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,它会使您的应用程序变得有点滑落。

+0

aaah,很好。是的,我也在考虑AJAX(jQuery),因为我需要用户在添加/删除/编辑内容时保留“文档”。如果我理解正确的返回视图(“标题”)方法,每次都会重定向用户,对吧? – BerggreenDK 2012-08-07 11:51:20

+0

@BerggreenDK'return View(“Heading”)'只是返回操作的视图,当您发布到操作本身,即'http:// mydomain/Documents/AddHeadingSection'时,会发生实际的导航。这里返回的视图将成为新的标题。因此,在您的场景中,您可以通过AJAX发布这些操作,并且您可以返回呈现的HTML(将该段落添加到数据库之后)。 – James 2012-08-07 12:05:09

相关问题