MapRoute с моим расширением

Как создать правильный MapRoute с моим расширением? (например, «мой»). Этот MapRoute правильный

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

Но я хочу использовать controller.my?id. Этот MapRoute неверен

routes.MapRoute(
    name: "",
    url: "{controller}.my/{tid}",
    defaults: new { controller = "Home", action = "Index", tid = UrlParameter.Optional }
);

person user2666676    schedule 26.08.2013    source источник


Ответы (1)


Я думаю, что если вы добавите параметры в MapRoute, вы не сможете просто использовать их как строки запроса.

Удалите из MapRoute те параметры, которые вы хотите использовать в качестве строк запроса, и просто используйте их в методах действия:

routes.MapRoute(
    name: "",
    url: "{controller}.my",
    defaults: new { controller = "Home", action = "Index" }
);

Метод действия:

public ActionResult Index(string tid) // or int tid ...
{
    // ...
}

Таким образом, вы можете получить к нему доступ с помощью чего-то вроде ~/Home.my?tid=someThing

person Amin Saqi    schedule 26.08.2013
comment
спасибо, но ~/Home.my?tid=someThing имеет ответ 404; ~/Home.my/Index?tid=someThing - хорошо. - person user2666676; 26.08.2013
comment
@user2666676 user2666676 - Пока я понятия не имею... Вы уверены, что это возможно...? - person Amin Saqi; 26.08.2013
comment
@user2666676 user2666676 Вы добавили маршрут, который они предложили в ответе выше? Вы обязательно добавили его перед маршрутом по умолчанию (если он у вас есть)? - person asymptoticFault; 26.08.2013