2015-02-05 5 views
0

MvcSiteMapProvider v4 upgrade от v3.Узлы с пустым (по умолчанию) действием

У меня есть маршрут, как

routes.MapRoute(
    "SEPageNoAction", 
    "{controller}/{name}/{id}", 
    new { controller = "Home", action = "Index", name = UrlParameter.Optional, id = UrlParameter.Optional }, // Parameter defaults 
    new { name = @"\D+", id = @"\d+" } // Types 
); 

Я здание узлов в коде с DynamicNode

Я не устанавливать действий, или, скорее, устанавливает Action = нуль

Я буду затем добавьте «Имя» & «Id» в качестве RouteValues.

Когда я бегу, я получаю:

узел с ключом «KEY» и заголовка «TITLE» имеет как пустой «действие» и пустой «URL», который не позволил

Это работало в v3.

Что изменилось?

ответ

1

Единственное, что изменилось в этом случае, чтобы добавить проверку в SiteMap, чтобы гарантировать, что узел попадает в один из действующих прототипов узлов:

  • Узла маршрутизации на основе
  • URL-адрес основанное узел
  • не-интерактивные группировки узел узел определения
  • динамического поставщик узел

проверка ш как добавлено, потому что многие люди задавали конфликтующие свойства, а затем не могли понять, как получить рабочую конфигурацию. Поэтому теперь вместо того, чтобы задавать вопрос, они могут увидеть подробное сообщение об ошибке, которое сообщает им, что не так, поэтому они могут его исправить.

В ретроспективе, это, вероятно, было бы лучше, чтобы сделать проверку на controller имущества вместо action, но в то время я предполагал, что будет проблема с этим, потому что контроллер не является обязательным в конфигурации XML (он будет наследовать контроллер из его родительского узла).

Итак, вкратце, вы получаете эту ошибку, потому что ваше действие является пустой или пустой строкой. Чтобы он соответствовал вашему маршруту, вам нужно будет явно указать действие «Индекс».

Если вы не удовлетворены этим решением, вы можете открыть new issue on GitHub или отправить запрос на тяну с предлагаемым исправлением.