2013-04-08 1 views
0

Я пишу AJAX вызова, который выглядит следующим образом:Использование Бритва в Jquery

<script type="text/javascript"> 
          $(function() { 
          $.ajax({ 
           url: @(Url.Action("_ModulePartial", "Home")), 
           dataType: 'html', 
           success: function(data) { 
           $('#_ModulePartial').html(data); 
           }, 
          }); 
         }); 
         </script> 
      } 

я хочу вызвать действие _ModulePatial в главном контроллере по умолчанию в зоне с использованием Url.Action

<script type="text/javascript"> 
            $(function() { 
            $.ajax({ 
             url: /Home/_ModulePartial, 
             dataType: 'html', 
             success: function(data) { 
             $('#_ModulePartial').html(data); 
             }, 
            }); 
           }); 
           </script> 
        } 

/Главная/_ModulePartial отлично работает, но я хочу добиться этого, используя @ Url.Action, потому что у нас есть 2 разных URl http: /TestUrl.com/Test/User/Login и http://TestUrl.com/User/Login, поэтому указанный выше Url не будет работать под одним из серверов. поскольку 1st Url содержит «Test», он не может найти Домашний контроллер.

Мы можем использовать Url.Action в JQuery?

Firebug дает эту ошибку

SyntaxError: missing } after property list 
[Break On This Error] 

url: /Home/_ModulePartial, 

при попытке вызова с помощью @ Url.Action в 1-й сценарий

ответ

0

Понял ... :)

Просто используйте одинарные кавычки. и она работает

<script type="text/javascript"> 
          $(function() { 
          $.ajax({ 
           url: '@(Url.Action("_ModulePartial", "Home"))', 
           dataType: 'html', 
           success: function(data) { 
           $('#_ModulePartial').html(data); 
           }, 
          }); 
         }); 
         </script> 
      } 
+0

Чтобы развернуть это, помните, что вызовы ASP.NET, такие как Razor, выполняются на уровне сервера, прежде чем страница будет отправлена ​​клиенту. То, что вы делаете, - это установка заполнителя для текста, который должен быть введен сервером. После отправки страницы клиенту текст-заполнитель уже будет изменен. jQuery - это клиентский язык и интерпретируется браузером. Весь серверный код будет заменен, и браузер увидит только результат вызовов ASP.NET. Я надеюсь, что в этом есть смысл. – Apache

1

Вы должны включить имя области в вашем АЯКС вызова, и вы должны сделать это следующим образом:

'@Url.Action("_ModulePartial", "Home", new { area = "Test" })' 

Вот полный Ajax вызов:

<script type="text/javascript"> 
    $(function() { 
     $.ajax({ 
      url: '@Url.Action("_ModulePartial", "Home", new { area = "Test" })', 
       dataType: 'html', 
       success: function(data) { 
        $('#_ModulePartial').html(data); 
       }, 
      }); 
    }); 
</script> 

Кроме того, убедитесь, что дополнительные «}» после тега скрипта являются только ошибкой копирования-вставки.