ASP.net MVC Вопрос маршрутизации - PullRequest
0 голосов
/ 02 сентября 2011

В моем приложении ASP.Net MVC у меня есть следующие контроллеры

  • HomeController

  • ExController

ExController имеет этот метод, который принимает строковые параметры:

public ActionResult Index(String id){....

С параметрами, страница успешно открывается как: mysite.com/Ex/Index/my-string-value

но я хочу, чтобы он принимал параметры как: mysite.com/Ex/my-string-value

Вот мои записи маршрутизации:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

        routes.MapRoute(
            "Post",
            "{controller}/{action}/{postId}",
            new { controller = "Ex", action = "Index", postId="" }
            );

Что мне нужно сделать, чтобы отправить параметры получения в ExController, набрав mysite.com/Ex/GetParameter вместо mysite.com/Ex/Index/GetParameter. Пожалуйста, помогите.

1 Ответ

2 голосов
/ 02 сентября 2011

Прежде всего вам нужно определить Ex-route перед маршрутом по умолчанию, в противном случае по умолчанию будет перехватывать все. Во-вторых, вы можете просто сделать это:

routes.MapRoute(
            "Post",
            "Ex/{postId}",
            new { controller = "Ex", action = "Index", postId="" }
            );

Это позволит вам сделать www.mysite.com/Ex/GetParameter

Вам также нужно изменить действие Index для вашего ExController на:

public ActionResult Index(String postId){....

, чтобы заставить Modelbinder правильно связать postId.

Это, в свою очередь, вызывает Индекс действия, передавая GetParameter в качестве postId

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...