Зачем вам нужно ограничение для ненулевого / пустого соответствия? Обычно, если вы определяете свой маршрут следующим образом:
context.MapRoute(
"Accommodation_accomm_tags",
"accomm/{controller}/{action}/{tag}",
new { action = "Tags", controller = "AccommProperty" },
);
и tag
не указаны в URL запроса, этот маршрут просто не будет совпадать.
А если вы хотите, чтобы токен был необязательным, то:
context.MapRoute(
"Accommodation_accomm_tags",
"accomm/{controller}/{action}/{tag}",
new { action = "Tags", controller = "AccommProperty", tag = UrlParameter.Optional },
);
Ограничения используются, когда вы хотите ограничить значение данного маркера маршрута в некотором определенном формате.