Как использовать помощника по маршрутизации t4mvc с пользовательскими ограничениями маршрута
Я использую t4mvc в моем текущем проекте, и я пытаюсь использовать включенный помощник по маршрутизации, однако, когда я пытаюсь использовать пользовательские ограничения, как показано ниже
routes.MapRoute(
"def_filtered_reports_route",
"reports/{samplePoint}/{fromDate}/{toDate}",
MVC.Report.Results(null, null, null),
new
{
samplePoint = new SamplePointExistsConstraint(),
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint()
}
);
это бросает ArgumentException
о том, An item with the same key has already been added.
если я напишу это так
routes.MapRoute(
"def_filtered_reports_route",
"reports/{samplePoint}/{fromDate}/{toDate}",
MVC.Report.Results(null, null, null) );
или как это
routes.MapRoute(
"def_filtered_reports_route",
"reports/{samplePoint}/{fromDate}/{toDate}",
new
{
controller = "Report",
action = "Results",
fromDate = "",
toDate = "",
samplePoint = ""
},
new
{
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint(),
samplePoint = new SamplePointExistsConstraint()
});
это работает отлично.
Есть что-то, что я пропускаю или t4mvc не поддерживает пользовательские ограничения
1 ответ
Решение
Попробуйте передать дополнительный ноль для значений по умолчанию перед ограничениями. например
routes.MapRoute(
"def_filtered_reports_route",
"reports/{samplePoint}/{fromDate}/{toDate}",
MVC.Report.Results(null, null, null),
null /*defaults*/,
new {
samplePoint = new SamplePointExistsConstraint(),
fromDate = new DateTimeConstraint(),
toDate = new DateTimeConstraint()
}
);