Я не могу дать вам ответ (я все еще ищу), но, возможно, это обходной путь.
Насколько я понимаю ваш вопрос, вы хотите сделать следующее:
а) my-pets.com/dog/brown/long/good-temper
б) my-pets.com/dog///mean-barker
в) my-pets.com/dog/black/
Пользователь сможет пропустить параметр (в примере b), цвет собаки и вид меха (короткий или длинный)
Мой обходной путь делает следующее:
string furType = Page.RouteData.Values["furType"] == null ? "-" : Page.RouteData.Values["furType"].ToString();
Это позволяет следующий маршрут
http://my -pets.com / собака / - / - / среднее-зазывалы
В моем коде я использую его для фильтрации значений из базы данных
var pet = new Pet();
pet.getPets(pet.filter(petType="dog", petTemper="mean-barker");