У меня проблемы с получением C # и JavaScript / jQuery для хорошей игры.
У меня есть модель вида нокаута, обычный старый объект javascript ... одно из его свойств / методов запускает .ajax()
call, и параметр url создается с использованием некоторых других значений его свойств (переменных javascript).
Это прекрасно работает, когда полностью содержится в JavaScript, но при развертывании в качестве приложения в IIS относительный путь скрыт.
Обычно в MVC3 я бы использовал что-то вроде @Url.Action
и позволил бы стороне сервера создать адрес ... но опять же, хитрость в том, что C # не знает об изменении значений JavaScript.
Код:
var viewModel = {
vendors: ko.observableArray([]),
count: ko.observable(10),
page: ko.observable(1),
filterText: ko.observable(""),
submit: function () {
$.ajax({
// works fine, until deploy when it is no longer a site relative URL
url: 'vendors/' + viewModel.count() + '/' + viewModel.filterText(),
// does not work, because C# is unaware of the javascript variables.
//url: @Url.Action("Vendors", "Home", new { count = viewModel.count(), filter = viewModel.filterText() })
dataType: 'json',
success: function (data) {
viewModel.vendors(data);
}
});
}
// next: // load sequence starting with (page+1 * count)
// previous: // load sequence starting with (page-1 * count)
};
ko.applyBindings(viewModel);
Вопрос:
У меня такой вопрос: как мне создать URL для вызова ajax, используя значения переменных javascript (например, count, filterText) ивсе еще карта из относительного корня приложения?