2016-02-23 4 views
0

У меня есть маршрут как:RedirectToAction маршрут по умолчанию оставляет URL пустой

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Demo", action = "Index", id = UrlParameter.Optional } 
); 

Маршрутизация работает нормально, но когда я использую перенаправлении как:

return RedirectToAction("Index", "Demo", new { data = "someData" }); 

Перенаправление работает, но URL отображается как

www.mydomain/ApplicationName /? = данные somedata

и форма есть действие как /applicationName/

Основная проблема находится где-то в сценарии, есть динамическая нагрузка содержания, где URL даются как ../DirName/image.jpg ожидающим будет меня контроллером имени присутствует, который также находится в использовать в других потоках. Здесь я получаю 404, как URL, который должен был

www.mydomain/ApplicationName/DirName/image.jpg

показывает

www.mydomain/DirName /image.jpg

Есть ли какие-либо легкие обходные пути для этого?

+1

Если вы хотите 'ww.mydomain/applicationName/somedata', тогда это должно быть' new {id = "someData"} '(и имя параметра метода также должно быть названо' id') или изменить определение маршрута на 'url: {контроллер}/{акт ion}/{data} ",' –

+1

И что касается 404, его из-за '.' (точки) в URL-адресе - обратитесь [этот вопрос/ответы] (http://stackoverflow.com/questions/11728846/ dots-in-url-cause-404-with-asp-net-mvc-and-iis) –

+0

Спасибо @StephenMuecke, ваш первый комментарий служит моей цели :) – SamGhatak

ответ

0

Уточнен вопрос, предложенный @StephenMuecke.

Правильным в маршрутизации будет:

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{data}", 
      defaults: new { controller = "Demo", action = "Index", data= UrlParameter.Optional } 
); 

Теперь отображается URL, как:

www.mydomain/ApplicationName/DirName/image.jpg

Смежные вопросы