ASP.NET MVC, включая ASP в Javascript - PullRequest
3 голосов
/ 30 марта 2009

Можно ли поместить теги ASp.NET в мой JavaScript, который находится в отдельном файле сценария. Например, у меня есть следующее

 $.getJSON("/Postcode/GetAddressResults/" + $get("SearchPostcode").value, null, function(data) {

который я хочу включить, но он не любит теги ASP!

var action = "<%=Url.Content('~/Postcode/GetAddressResults/')%>" + $get("SearchPostcode").value
        $.getJSON(action, null, function(data) {

Однако, похоже, это не работает, что я делаю не так?

Ответы [ 3 ]

1 голос
/ 30 марта 2009

Добавьте на свою главную страницу (страницы) метатег для хранения значения текущего пути приложения от хоста (бит, который представляет ~).

В вашем Javascript создайте функцию, которая будет разрешать путь с префиксом, используя содержимое метатега.

Редактировать

Пример по запросу: -

Поместите этот код в раздел заголовка ваших главных страниц: -

  <meta id="meta.AppDomainAppVirtualPath"
    name="AppDomainAppVirtualPath" value="<%=HttpRuntime.AppDomainAppVirtualPath%>" />

В вашем javascript включена эта функция: -

function resolveUrl(url)
{
    if (url.charAt(0) == "~")
    {
        if (!resolveUrl.appPath)
        {
           var meta = document.getElementById('meta.AppDomainAppVirtualPath');
           resolveUrl.appPath = meta ? meta .getAttribute("content") : '/';
        }

        if (resolveUrl.appPath == '/')
            return url.slice(1, url.length;
        else
            return resolveUrl.appPath + url.slice(1, url.length);
    }
    else
    {
        return url;
    }
}

Теперь ваша строка кода: -

$.getJSON(resolveUrl("~/Postcode/GetAddressResults/") + $get("SearchPostcode").value, null, function(data) {
0 голосов
/ 30 марта 2009

Нет, вы не можете. Вы можете открыть путь в своем представлении для javascript, но не напрямую во внешнем файле javascript.

@ Дэвид М Выделение целиком не является необходимым, вы можете встроить динамическую часть и оставить другую часть жестко закодированной.

С уважением, Питер

0 голосов
/ 30 марта 2009

Если ваш JavaScript находится в отдельном файле сценария, он не будет обрабатываться ASP.NET, поэтому эти теги не будут обрабатываться. Они вам понадобятся на странице ASP.NET, чтобы это работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...