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