2013-09-10 3 views
0

Мне нужна ваша помощь, у меня нет опыта работы маршрута.Как сопоставить маршрут для определенного действия в C# ASP.NET MVC3?

Теперь у меня есть следующие ссылки:

http://website.com/controller1/action1 
http://website.com/controller1/action2 

вопрос о том, как путь к другому URL для http://website.com/controller1/action1, не затрагивая URL для http://website.com/controller1/action2

Средства:

Когда доступ http://website.com/controller1/action1, Я хочу показать URL: http://website.com/shortcut, но для http://website.com/controller1/action2, чтобы показать то же, что и http://website.com/controller1/action2.

Возможно?

ответ

2

Вы можете добавить маршрут как к routeCollection в файле Global.aspx добавить к методу RegisterRoutes

routes.MapRoute(
    name: "shortcut", 
    url: "shortcut", 
    defaults: new { controller = "controller1", action = "action1" } 
); 
+0

Отличной работы, быстрого ответа и хорошего друга :) –

+1

Следует отметить, что это должно пойти * выше * маршрут по умолчанию (первый матч получает если это указано ниже маршрута по умолчанию, он никогда не будет достигнут) – Alex

+0

Я поставил выше по умолчанию маршрут, я знаю это правило :) –

0

маршрут по умолчанию в новом приложении ASP.NET MVC 3 будет обрабатывать ваши первые два запроса, но вы можете быть смущены о соглашение об именах. Например, если у вас есть класс контроллера с именем HomeController и в нем есть действие с именем action1, обработка по умолчанию этого маршрута будет /Home/action1.

Для обработки /controller1/action1 и /controller1/action2 вам необходимо буквально назвать свой класс контроллера controller1Controller и добавить два действия, например.

public class controller1Controller : Controller 
{ 
    public ActionResult action1() 
    { 
     return View(); 
    } 
    public ActionResult action2() 
    { 
     return View(); 
    } 
} 

Чтобы обработать Ваш /shortcut маршрут, вы можете использовать то, что Satpal предложил до тех пор, как это определено выше маршрута по умолчанию. Чем более конкретным является маршрут, тем раньше в определении маршрута он должен появиться, например.

routes.MapRoute(
    name: "nameOfShortcutRoute", 
    url: "shortcut", 
    defaults: new { controller = "controller1", action = "action1" } 
); 

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

Проверить эту ссылку для хорошей маршрутизации учебника

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