У меня есть контроллер листингов с действием Index, который принимает необязательный параметр категории ...
public ActionResult Index(string category) { ... }
У меня есть стандартный маршрут по умолчанию в global.asax ...
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Если я позвоню ...
@Html.ActionLink("Show All Listings", "Index", "Listings")
... из представления (даже представления для того же действия с указанной категорией), я получу ссылку на "/Listings".
Если я позвоню ...
@Html.ActionLink("Show Listings for Category A", "Index", "Listings", new { category = "CategoryA" }, null)
... Я получу ссылку на "/ Listings? Category = CategoryA".Пока все хорошо.
Итак, я хотел бы создать собственный маршрут для указанной категории.Для этого я добавил собственный маршрут к global.asax как раз перед указанным выше маршрутом следующим образом:
routes.MapRoute(
"ListingCategories",
"listings/category/{category}",
new { controller = "Listings", action = "Index" }
);
Теперь, если я позвоню ...
@Html.ActionLink("Show Listings for Category A", "Index", "Listings", new { category = "CategoryA" }, null)
... Я получухорошая ссылка "/ Listings / Category / CategoryA"
Но вот проблема.Если я позвоню ...
@Html.ActionLink("Show All Listings", "Index", "Listings")
... из представления вышеупомянутого действия с категорией = "CategoryA", генерируется ссылка "/ Listings / Category / CategoryA" вместо просто"/ предложения".Но когда я делаю тот же вызов из любого другого представления, ссылка генерируется нормально, как "/Listings".
Я пытался позвонить ...
@Html.ActionLink("Show All Listings", "Index", "Listings", new { category = "" }, null)
... и этопо-прежнему генерирует ссылку как "/ Listings / Category / CategoryA" при вызове из представления для действия, которое имело category = "CategoryA".Однако, если я задаю категорию для любой непустой строки, то она генерирует ссылку на правильную категорию (что бы я ни указывал).
Это ожидаемое поведение?