2011-05-25 46 views
2

我有一個ASP.NET MVC 2的Web應用程序,它應該從一個相當愚蠢的系統接收請求。有問題的系統希望它是一個PHP站點。不是。我獲得請求的形式爲:ASP.NET MVC Routing Assistance

 
http://myIP/index.php?oa=val1&da=val1&ud=val1 

我有一個控制器的方法

Index(string oa, string da, string ud) 

但我不知道如何讓這個請求路由到該控制器。我已經試過

routes.MapRoute( 
    "R", 
    "index.php/{oa}/{da}/{ud}", 
    new { controller = "Home", action = "Index" } 
); 

但無濟於事。它適用於索引格式爲Index.php/val1/val2/val3的請求,但當請求如上所示時,它會生成一個404.

謝謝。

回答

1

我會的路線簡單地映射到 「PHP」 頁面。查詢字符串參數不會轉換爲路由數據。

routes.MapRoute("R","index.php", new { controller = "Home", action = "Index" }); 

,然後在控制器上你的行動

public ActionResult Index() { 
    string oa = Request.QueryString["oa"]; 
    string da = Request.QueryString["da"]; 
    string ud = Request.QueryString["ud"]; 

    //do the rest of your logic here (obviously) 

    return View(); 
} 
2

該路由不起作用,因爲QueryString不是RouteData的一部分。最好將路由值分開以查詢參數。

我只是簡單地映射index.php,然後訪問控制器中的查詢字符串。

+0

肖偷了你的答案! – Terry 2011-06-04 17:21:00

0

您可以使用此路由:

routes.MapRoute(
      "php", 
      "index.php", 
      new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }); 

,並使用此方法:

public ActionResult Index(string oa, string da, string ud){ 
    .... 
}