ASP.NET MVC Помощь при маршрутизации - PullRequest
2 голосов
/ 25 мая 2011

У меня есть веб-приложение ASP.NET MVC 2, которое должно получать запрос от довольно глупой системы. Рассматриваемая система ожидает, что это будет сайт PHP. Это не. Запрос, который я получаю, имеет форму:

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.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

Маршрут не работает, потому что QueryString не является частью RouteData.Лучше хранить значения маршрута отдельно от параметров запроса.

Я бы просто отобразил index.php и затем получил доступ к строке запроса в вашем контроллере.

1 голос
/ 25 мая 2011

Я бы просто отобразил маршрут на страницу "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();
}
0 голосов
/ 25 мая 2011

Вы можете использовать эту маршрутизацию:

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

и используйте этот метод:

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