2010-04-11 50 views
0

我是在asp.net mvc begginer,我有一些关于路线的doutbs。如何使此路线(ASP.Net MVC2)?

林”开发一个系统来管理文件,我需要做一个像这样的URL:

 routes.MapRoute("Documentos", 
      "{controller}/{documentType}/{documento}/{action}/{id}", 
      new 
      { 
       controller = "Home", 
       documentType = "", 
       documento = "", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 

和应用程序的工作像论文的URL:

‘文件/管理/合同’ - ( “文件/管理/合同/新” - (控制器中的新动作) “文件/行政/合同/ 10” - (控制器中的详细动作) “文件//Administrative/Contract/Edit/10“ - (在控制器中编辑动作)

文件将是一个控制器和管理将是URL只是一个说明,以确定的“契约”的文件是行政...

所以,我怀疑是我的控制器和行动,如何应控制器方法的签名?我需要让一个叫做Documents的区域更容易做到这一点吗?

PS:Sorry for my english!

非常感谢, 干杯!

Felipe

回答

0

只有1个控制器文档。

在此控制器中有操作索引 ,新建和编辑。

所有操作都需要具有参数documentType和documento或(更好)您有一个 Viewmodel作为具有属性documentType和documento的参数。

将此Viewmodel传递给视图。在视图中使用Html.ActionLink生成具有documentType和documento设置的链接。

0
routes.MapRoute("Documentos", 
      "Document/{documentType}/{documento}/{action}/{id}", 
      new 
      { 
       controller = "Document", 
       documentType = "", 
       documento = "", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 

当你想“文档/行政/合同”的网址为默认的列表,你必须做出这样的硬编码路径:

routes.MapRoute("Documentos", 
      "Document/Administrative/Contract", 
      new 
      { 
       controller = "Document", 
       documentType = "Administrative", 
       documento = "Contract", 
       action = "List" 
      }); 

你的行为应该清楚包含相同的名称用于路线中的参数。或者结合模型类中的参数。

public ActionResult(string documentType, string documento, int id) 

public ActionResult(Document doc) 
如果使用Model类文档

public class Document 
string documentType; 
string documento; 
int id; 

HTH