2011-06-28 33 views
3

我希望用戶能夠使用restful語法訪問對象(可以是JSON或XML),而不必使用查詢字符串。是否有可能在asp.net mvc中使用maproute路由多個參數

因此,而不是http://mywebsite.com/objects/get=obj1&get=obj2&get=someotherobject/他們可以做一些像http://mywebsite.com/objects/obj1/obj2/和xml/JSON將被返回。他們可以按任何順序列出對象,就像查詢字符串一樣。

在asp.net的MVC你映射的路線,像這樣:

 routes.MapRoute(
      "MyRoute", 
      "MyController/MyAction/{param}", 
      new { controller = "MyController", action = "MyAction", param = "" } 
     ); 

我希望做這樣的事情:

 routes.MapRoute(
      "MyRoute", 
      "MyController/MyAction/{params}", 
      new { controller = "MyController", action = "MyAction", params = [] } 
     ); 

其中params陣列將包含分別獲得。

回答

3

不完全。

您可以通過映射{*params}來創建通配符參數。
這會給你一個包含所有參數的字符串,然後你可以使用.Split('/')

+0

是否可以將ASP.NET MVC MapRoutes移動到XML文件,而不是通過編程方式使用routes.MapRoute?另外,將它推到XML文件,而不是將它編碼到C#和/或VB.NET,會不會是更好的做法? – user1338998

+0

@ user1338998:您可以編寫自己的代碼來讀取XML並調用MapRoute()。其他人可能已經編寫了這樣的代碼 – SLaks

+0

LOL,我不想在.NET開發人員和JEE開發人員之間展開惡性爭論。不過,我想提到的是,在JEE技術中,配置JSF MVC和Struts MVC中的視圖的映射總是在像faces-config.xml和struts-config.xml這樣的XML文件中,這是正確的做法,因爲我們不會不想重新編譯。換句話說,我們可以修改xml,然後重新啓動服務器。 – user1338998

3

你可以使用一個包羅萬象的參數

routes.MapRoute(
     "MyRoute", 
     "MyController/MyAction/{*params}", 
     new { controller = "MyController", action = "MyAction"} 
    ); 

這將通過PARAMS如,你可以拆分在/獲得一個數組的字符串。

相關問題