У меня возникли проблемы с получением С# и JavaScript/jQuery, чтобы играть здесь хорошо.
У меня есть модель представления нокаута, простой старый объект javascript... один из его свойств/методов запускает вызов .ajax()
, а параметр url построен с использованием некоторых других его значений свойств (переменные javascript).
Это отлично работает, когда полностью содержится в JavaScript, но при развертывании в качестве приложения для IIS относительная траектория запускается.
В MVC3 я обычно использовал бы что-то вроде @Url.Action
и позволял стороне сервера строить адрес... но опять же, трюк С# не знает об изменениях значений 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) и по-прежнему отображать от относительного корня приложения?