2015-06-19 2 views
1

Я делаю:Как я могу вызвать действие URL из Javascript?

var url = '@Url.Action("Attachments", "Transactions")'; 
url += '/?id=' + 3201; 
$("#attachments").load(url); 

Однако, при загрузке он ничего не делает. Я что-то упускаю?

я принципиально хочу называть что-то подобное:

@{Html.RenderAction("Attachments", "Transactions", new { id = 3301 });} 

Я получаю следующее сообщение об ошибке на консоли:

http://server:54137/Transactions/@Url.Action(%22Attachments%22, 
+0

что вы пытаетесь сделать? '.load()' - _Загрузить данные с сервера и поместить возвращенный HTML в сопоставленный элемент_ http://api.jquery.com/load/ –

+0

Поместить инструкцию 'console.log (url);' непосредственно после 'var url = ... 'и проверить, что он возвращает. –

+1

ваш код отлично работает для меня. Я использовал 'console.log (url);' и напечатал - '/ Transactions/Attachments /? Id = 3201'. Поэтому, пожалуйста, проверьте другие части вашего кода. – ramiramilu

ответ

0

вам нужно использовать Html.Raw чек ниже

var url = "@Html.Raw(Url.Action("Attachments", "Transactions"))"; 
url += '/?id=' + 3201; 
$("#attachments").load(url); 
+0

Вам не нужно использовать 'Html.Raw()' - ''@ Url.Action (" Вложения "," Транзакции ")';' будет возвращать ''/Transactions/Attachments'' –

3

You должен использовать внешний файл JavaScript, который не будет анализировать ваш синтаксис синтаксиса бритвы e ошибка в вашей консоли @Url.Action(%22Attachments%22..

У вас есть несколько вариантов:

  1. Создание функции JavaScript и передать в URL:

    function loadUrl(url) { $("#attachments").load(url); }

Затем в бритве называют его внутри тега сценария :

loadUrl(@Url.Action("Attachments", "Transactions", new { id = @Model.Id }) 
  1. Добавьте URL-адрес элемента html в качестве данных и прочитайте его с вашего JavaScript с помощью метода data.

В вашей бритвы разметке добавить следующее:

<button data-url="@Url.Action("Attachments", "Transactions", new { id = @Model.Id })" /> 

из обработчика событий JavaScript прочитал его:

var url = $(this).data('url'); 
$("#attachments").load(url); 

Я предпочитаю второй вариант.

+0

По какой-то причине, Кажется, что это волнует? Я получаю ту же ошибку, когда я пробую вариант два. Я привязал значение данных к списку выбора опций и смог правильно получить URL-адрес. Затем, когда я пытаюсь загрузить его, он все равно дает мне ошибку: – SamIAm

+0

GET http: // localhost: 49793/Transactions/@Url.Action (% 22Attachments% 22 404 (не найдено) – SamIAm

+0

@SamIAm Привет, вам нужно убедитесь, что вы вызываете '@ Url.Action' из файла бритвы, то есть' .cshtml', или он не будет разрешен. Если вы вызываете его из внешнего файла '.js', он будет рассматривать его как javascript и разрешать как '@Url.Действие ", а не путь к действию, т. Е.'/Transaction/attachments'. – hutchonoid

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