2014-09-15 4 views
0

У меня есть контроллер продукта и два метода редактирования и загрузки файлов. Что мне делать в моей конфигурации маршрута, чтобы эти две работы работали.MVC routing proble

Продукт/6 (для редактирования ProductID 6)

Продукт/FileUpload (для загрузки файла).

мой текущий маршрут routeconfig выглядит следующим образом: -

 routes.MapRoute(
     name: "editProducts", 
     url: "Product/{id}", 
     defaults: new { controller = "Product", action = "Edit", id=UrlParameter.Optional } 
    ); 

ответ

0

Попробуйте следующее:

routes.MapRoute(
     name: "editProducts", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Product", action = "Edit", id=UrlParameter.Optional } 
    ); 
+0

не работает, поскольку это связано с моей страницей входа. – iGod

+0

Вы используете аутентификацию формы или членство в asp.net? –

+0

Спасибо, Хирен. вышеупомянутое решение Стивена Муекке помогло мне. хотя я хочу сделать это более общим. но он решил мою проблему на данный момент – iGod

1

Добавьте следующие маршруты (в указанном порядке) до дефолта. Я предположил, что вы всегда нужен идентификатор для редактирования, чтобы параметр id не обязателен (но вы могли бы сделать это так), и я не был уверен, что, если вам нужно передать параметр методу FileUpload

routes.MapRoute(
    name: "Upload", 
    url: "Product/FileUpload/{id}", 
    defaults: new { controller = "Product", action = "FileUpload", id = UrlParameter.Optional } 
); 

routes.MapRoute(
    name: "editProducts", 
    url: "Product/{id}", 
    defaults: new { controller = "Product", action = "Edit" } 
); 
+0

Спасибо. я принял вышеупомянутую технику – iGod

0

Add tahe следующие маршруты по одному и тому же порядку до дефолта.

routes.MapRoute(
     name: "fileupload", 
     url: "{controller}/{action}", 
     defaults: new { controller = "Product", action = "Fileupload"} 
    ); 

    routes.MapRoute(
     name: "editProducts", 
     url: "Product/{id}", 
     defaults: new { controller = "Product", action = "Edit", id=UrlParameter.Optional } 
    );