Я пытаюсь создать маршрут, который может разрешать различные форматы (html / json / xml и т. Д.)
Это то, что я пытаюсь, но это не работает.
routes.MapRoute(
"Default",
"{controller}/{action}/{id}/{format}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional, format = "html" },
new { format = @"html|json" , id=@"\d+"}
);
Работающие маршруты:
/ Person / подробности / 1
/ Человек / подробности / 1 / * 1006 JSON *
Но это не работает:
/ Person, которому по умолчанию imo следует / Person / Index / html
/ Персона / JSON и IMO должны привести к / Персона / Индекс / JSON
Но это не соответствует.
Для второго из тех, кто не работает, я предполагаю, что он думает, что json - это действие, и в этом проблема. Но для первого я не получаю его полностью, так как у меня есть значения по умолчанию для каждой части URL , и id необязателен, и он не может думать, что html / json является идентификатором, поскольку я говорю, что id должен быть числом в любом случае, поэтому он должен получить его.
Так кто же не первый, кто работает?
Для второго я намеревался написать регулярное выражение, подобное этому (я знаю, что это не настоящее регулярное выражение, кстати, любая помощь по этому вопросу также приветствуется ..): action = @ "! (Html | json | \ d + ) ", чтобы он увидел, что я не пытаюсь сказать, что json / html - это действие, но что тогда он должен использовать индексное действие по умолчанию.
Но так как первый даже не работает, я думаю, что сначала мне нужно решить его.