.NET MVC jQuery относительный путь для window.location - PullRequest
5 голосов
/ 15 июня 2009

У меня очень простая проблема, но я не могу ее решить.

Следующее не работает из-за способа, которым MVC создает URL (он включает в себя всю информацию о маршруте). Я хочу, чтобы pathname возвращал только путь виртуального каталога.

Все, что я делаю, - это перенаправление на другой маршрут, когда пользователь выбирает идентификатор из выпадающего списка.

$(document).ready(function() {
    $('#TransactionIds').change(function() {
        document.location = window.location.pathname + "/CeuTransaction/Index/" + $('#TransactionIds').val();
    });
});

Ответы [ 2 ]

10 голосов
/ 15 июня 2009

Используйте UrlHelper для построения пути. Он будет учитывать расположение приложения относительно корня веб-сервера.

$(document).ready(function() {
   $('#TransactionIds').change(function() {
       document.location = '<%= Url.Action( "Index", "CeuTransaction" ) %>'
                            + '/'
                            + $('#TransactionIds').val();
   });
});

Альтернатива: разделить на две части, чтобы функция могла быть включена в библиотеку javascript (все еще необходимо вызывать из view или master). Немного поработав, вы также можете сделать это расширением jQuery.

function redirectOnChange( selector, action )
{
   $(selector).change( function() {
       document.location = action + '/' + $(selector).val();
   });
}

По виду:

$(function() {
    redirectOnChange('#TransactionIds',
                     '<%= Url.Action( "Index", "CeuTransaction" ) %>' );
});
6 голосов
/ 15 июня 2009

Вот что я в итоге сделал.

Добавлено скрытое текстовое поле на страницу:

<input type="hidden" value="<%= Url.Content("~/CeuTransaction/Index/") %>" id="pathname" />

использовал следующее в библиотеке скриптов js:

// The following line enables jQuery intellisense
/// <reference path="jquery-1.3.2-vsdoc.js" />

$(document).ready(function() {
    $('#TransactionIds').change(function() {
        document.location = $('#pathname').val() + $('#TransactionIds').val();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...