У меня есть приложение MVC.NET, которое использует Knockout.js (+ knockout.mapping), чтобы иметь дело с некоторыми каскадами выпадающих списков. Данные для них поступают от вызова WebAPI к внешней службе. Так как это происходит, для этой услуги требуется токен аутентификации, срок действия которого истекает через 2 часа, поэтому приложение MVC помещает данные из службы в System.Web.Caching.Cache и возвращает его туда, если токен не истек, где он будет захватывать это снова из службы. Это прекрасно работает. Однако, когда мне нужно получить это в представлении, в настоящее время я использую следующий метод, который должен иметь свойство ViewModel, которому я присвою данные службы/кэша, а затем сделать это на вид:knockout.js внешняя модель js-файл
var model = new ViewModel(@Html.Raw(Json.Encode(Model.ReferenceData)))
ko.applyBindings(model);
, где Model.ReferenceData
- это данные услуги. снова это прекрасно работает, но ... дело в том, что на странице тогда есть все данные Json, сбрасываемые в нем при каждом запросе. Я хотел бы использовать внешний JS-файл для ReferenceData, так как по крайней мере он может быть кэширован браузером и уменьшить вес страницы для будущих запросов. Однако я полагаю, что накладные расходы на создание JS-файла не так уж малы, вместе с тем, что мне действительно нужно, так это создать ссылку на этот файл, который изменяется почти так же, как встроенный набор MVC-файлов js-файлов работает - генерирует ссылку с запросом. Мой вопрос: есть ли простой способ сделать это? Я уверен, что, когда кеш заполняется в первый раз, сгенерируйте файл js и ссылайтесь на него в представлении, но, как я уже сказал, он получает это, чтобы изменить его ссылку каждый раз, когда он обновляется, или, по крайней мере, данные в нем изменились и обновление только тогда, где проблема.
Любое понимание, чтобы это было бы большим подспорьем
Благодаря
Nat
Вы можете создать метод действия, который возвращает объект JSON и вызвать его с помощью ajax, чтобы заполнить модель просмотра ko. – manji