asp.net mvc маршрутизация идентификационного параметра

Я работаю над веб-сайтом в asp.net mvc. У меня есть маршрут

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

который является маршрутом по умолчанию. И у меня есть метод

public ActionResult ErrorPage(int errorno)
{
    return View();
}

Теперь, если я хочу выполнить этот код с http://something/mycontroller/Errorpage/1, он не работает. Но если я изменяю название параметра к идентификатору от errorno работает.

Действительно ли обязательно иметь то же название параметра для этого метода? Или я должен создать отдельные маршруты для таких ситуаций?

16
задан Adinia 16 March 2012 в 09:50
поделиться

3 ответа

Вариант 1

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

public ActionResult ErrorPage(int id)
{
    return View();
}

Вариант 2

routes.MapRoute(
    "Default",
    "{controller}/{action}/{errorno}",
    new { controller = "Home", action = "Index", errorno = UrlParameter.Optional }
);

public ActionResult ErrorPage(int errorno)
{
    return View();
}

Вариант 3

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

public ActionResult ErrorPage(int id)
{
    int errorno = id;
    return View();
}
16
ответ дан 30 November 2019 в 16:30
поделиться

Вы можете либо переименовать параметр в корне по умолчанию (что, вероятно, не очень хорошая идея), либо переименовать его в методе действия. Добавление другого корня не поможет, потому что он будет таким же, как и корень по умолчанию, и с учетом URL-адреса механизм маршрутизации не может различить их и всегда будет выбирать первый в списке.

0
ответ дан 30 November 2019 в 16:30
поделиться

попробуйте использовать то же имя параметра в методе действия, что и в параметре url таблицы маршрутов.

global.asx

routes.MapRoute(

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

                );

myController

public ActionResult ErrorPage(int id)

    {
        return View();
    }
0
ответ дан 30 November 2019 в 16:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: