2011-06-30 29 views
1

我有以下區域路由設置。mvc3路由設置爲id,id2 id3

context.MapRoute(
    "Admin_default3", 
    "Admin/{controller}/{action}/{id}/{id2}/{id3}", 
    new { action = "Index" } 
); 
context.MapRoute(
    "Admin_default2", 
    "Admin/{controller}/{action}/{id}/{id2}", 
    new { action = "Index"} 
); 

context.MapRoute(
    "Admin_default", 
    "Admin/{controller}/{action}/{id}", 
    new { action = "Index", id = UrlParameter.Optional } 
); 

當一個控制器操作被命中時,我做了類似於下面的事情,將參數放入可讀的變量名中。

public ActionResult Search(Guid? id, int? id2, bool? id3) 
{ 
    Guid? source = id; 
    int daysOld = id2; 
    bool includeNonEnglish = id3; 

    //.... Action! 
} 

我應該繼續嗎?我應該創建過多的路線嗎?

謝謝

回答

3

我會創建更多的路線。這樣一來,你有喜歡的東西:

Html.ActionLink(title, "Action", "Controller", new { source = <value>, daysOld = <value>, includeNonEnglish = <value> }); 

相反的:

Html.ActionLink(title, "Action", "Controller", new { id = <value>, id2 = <value>, id3 = <value> }); 

在其他方面(如AJAX使用jQuery,您使用JSON用於指定調用的參數)。它會使事情更具可讀性。如果您正在使用或正在使用T4MVC,這也會有所幫助。

+0

偉大的建議,尤其是ajax。我現在也在查T4。 –