Я пытаюсь написать тяжелую часть моего веб-приложения Asp.net MVC на javascript (эта часть веб-сайта представляет собой RIA с использованием Extjs). Тем не менее, я остановился на правильном способе обработки URL-адресов в JavaScript.
Например, сейчас у меня есть Ajax-вызов к действию List
в ObjectsController
, которое находится в области Reading
. Действие List принимает параметр documentId
(int). На данный момент это соответствует /Reading/Objects/List
, так как я еще не изменил маршрутизацию (на данный момент сайт слишком молод, чтобы завершить маршруты). Обычно, чтобы поместить этот URL в строку, я бы сделал @Html.Action("List", "Objects", new { area = "Reading", documentId = 3)
.
Однако, это не работает при работе с javascript, так как javascript не анализируется в viewengine.
Чтобы обойти это, у меня есть очень маленькое представление, которое возвращает константы javascript, такие как URL, которые загружаются до файлов js моего основного приложения. Проблема в том, что я не могу вызвать Html.Action
для этого действия, потому что при постоянном времени создания я (очевидно) не знаю, каким documentId будут ajax-вызовы, и если вы исключите documentId
из вызова Html.Action
исключение происходит. DocumentId может измениться во время нормального рабочего процесса приложения.
Как мне справиться с этим? Я не хочу жестко задавать URL-адрес для /Reading/Objects/List
, потому что, если я изменю свою маршрутизацию для этого (для более удобного для пользователя json API) или это веб-приложение не будет размещено в корне домена, URL-адрес не будет дольше быть действительным.
Как все остальные обрабатывают URL-адреса MVC в своих вызовах JavaScript?