2013-08-08 3 views
0

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

var Url = '@Url.Action("GetSomething", "SomeController", 
     new { 
       area = "", repository = Model.Repository, 
       multiSelect = Model.MultiSelect })'; 

В моей JavaScript я загружаю с помощью объекта Url определен выше, и получить по следующему адресу

/EmployeeRepository/GetTree? MULTISELECT = True/1

Моего это вызывает проблемы, потому что URL-адрес не правильно отобразить в конфигурацию маршрутизации whic ч:

routes.MapRoute("HierarchyMultiSelect", 
        "{repository}/{action}/{id}/{multiSelect}", 
        new { controller = "SomeController", 
        id = UrlParameter.Optional, 
        multiSelect = UrlParameter.Optional }, 
        new { repository = @"\w*Repository$" }, namespaces); 

Это работает, если URL является

/EmployeeRepository/GetTree/1/Правда

Так я хотел бы знать, как я могу получить URL-адрес, чтобы быть в в котором в настоящее время выполняется следующее:

staffTree.load(url + "/" + id, function() {} 

Было бы лучше использовать данные маршрута с использованием параметров или сортировка URL-адреса в javascript?

Заранее спасибо

ответ

0

Может быть, я ошибаюсь, но ваш ActionResult не установлен в маршрутизации. На мой взгляд, вы должны добавить action = "GetTree" заявление в маршрут:

routes.MapRoute(
       name: "HierarchyMultiSelect", 
       url: "{repository}/{action}/{id}/{multiSelect}", 
       defaults: new { controller = "SomeController", 
         action = "GetTree", 
         id = UrlParameter.Optional, 
         multiSelect = UrlParameter.Optional }, 
       new { repository = @"\w*Repository$" }, namespaces); 
0

Ваш маршрут требует свойство «ID». У вас не может быть двух необязательных параметров и вы можете указать значение для второго, но не первого. Либо укажите идентификатор, либо укажите маршрут без идентификатора.

Вы можете поместить в заполнитель для идентификатора, как значение «!! id !!» и используйте Javascript для замены, если это необходимо. Вы также можете использовать Url.HtmlRoute("HierarchyMultiSelect") для принудительного использования определенного маршрута, но вам все равно нужно будет объединить идентификатор.

Смежные вопросы