как использовать помощника по маршрутизации t4mvc с пользовательскими ограничениями маршрута - PullRequest
0 голосов
/ 13 августа 2011

я использую 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 Ответ

2 голосов
/ 14 августа 2011

Попробуйте передать дополнительный ноль для значений по умолчанию перед ограничениями.например,

        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()
           }
           );
...