2009-03-30 2 views
3

Можно ли поместить теги ASp.NET в свой javascript, который находится в отдельном файле сценария. Например, у меня есть следующее:ASP.NET MVC, включая ASP в 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) { 

Однако это не работает, что я делаю неправильно?

+0

Какая ошибка вы получаете? Можно вставлять asp-теги в js, так как asp обрабатывается первым. – Brian

+0

Любой окончательный ответ о том, возможно ли это? Я вижу обходное решение ниже, но я хотел бы знать, можно ли встраивать теги asp.net внутри блоков сценариев или нет. – Pete

+0

Nevermind - я не читал, что это относится к отдельному файлу js. Динамические теги работают внутри блоков сценариев, хотя он прерывает выделение кода и intellisense в Visual Studio. – Pete

ответ

1

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

В вашем 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; 
    } 
} 

Теперь ваш li ne кода: -

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

Можете ли вы привести мне пример этого, пожалуйста? – andyJ

0

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

0

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

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

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

+0

@Peter, Если вы хотите прокомментировать ответ Давидса, используйте функцию Добавить комментарий. Ограничьте содержимое, на которое вы отвечаете, на ответ на вопрос. – AnthonyWJones

Смежные вопросы