Как узнать текущее название проекта Asp.Net MVC 3? - PullRequest
1 голос
/ 23 июля 2011

У меня есть проект Asp.net MVC 3 с именем «abc». Он показывает http://localhost:23543/abc/.... при отладке в VS. URL будет http://hostname/webAppName/abc/... после публикации проекта в виртуальной папке на веб-сайте IIS 7 по умолчанию.

Однако, есть некоторый ajax-вызов jQuery, использующий '/scripts/...', в отдельном внешнем js-файле. Абсолютный путь '/scripts/' станет ...wwwroot/abc/scripts/... вместо ...wwwroot/webAppName/abc/scripts/.... Я создаю функцию js для переноса ссылок URL ajax.

var fullPath = '@HttpContext.Current.Request.Url.Scheme://@HttpContext.Current.Request.Url.Authority';
function GetPath(projectName, url) {
    return fullPath + projectName + url;
}

В файле js: ... url: GetPath('/scripts/...')....

Как узнать название проекта? Или есть лучшее решение?

Ответы [ 3 ]

2 голосов
/ 23 июля 2011

Обычно в скрипте я обычно использую AJAXify для существующих якорных ссылок или форм, которые уже имеют правильный URL, как они были созданы с помощью HTML-помощников.

Так, например, с формой (сгенерированной с помощью Html.BeginFormпомощник):

$('#myform').submit(function() {
    $.ajax(}
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function(result) {

        }
    });
    return false;
});

или с привязкой (создается с помощью Html.ActionLink помощник):

$('#mylink').click(function() {
    $.ajax(}
        url: this.href,
        type: 'POST',
        success: function(result) {

        }
    });
    return false;
});

Конечно, в некоторых случаях вам может понадобиться URL, отличный от ссылкиили форма.В этих случаях я обычно использую атрибуты HTML5 data-* для некоторого элемента DOM.Например:

<div id="foo" data-url="@Url.Action("SomeAction", "SomeController")">foo bar</div>

и когда мне понадобился этот URL, я просто:

var url = $('#foo').data('url');

Посмотрите, как нам не нужна никакая функция GetPath.Все URL-адреса уже являются частью нашего DOM, и в отдельном файле javascript мы просто используем их.

2 голосов
/ 23 июля 2011

Используйте приведенный ниже код для создания URL-адреса запроса mvc

var siteRoot = '@Url.Content("~/")';
function GetPath(url) {
    return siteRoot + url;
}
2 голосов
/ 23 июля 2011

В вашей разметке вы можете использовать относящийся к сайту URL, который будет переведен в правильную форму во время выполнения:

<script type="text/javascript" src="@Url.Content("~/Scripts/myscript.js")"></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...