2010-04-11 63 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