создание относительных URL-адресов для приложения MVC с помощью JavaScript

У меня проблемы с получением 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) и по-прежнему отображать из относительного корня приложения ?

10
задан one.beat.consumer 16 March 2012 в 22:09
поделиться