действие контроллера вызова со страницы .cshtml с помощью jquery - PullRequest
0 голосов
/ 17 февраля 2012

Я пытаюсь вызвать действие контроллера из диалогового окна jquery UI.В настоящее время у меня есть следующее:

.html("<p><textarea name=\"TextMessage\" id=\"textItems\" rows=\"10\" cols=\"72\" /><br /><br /><input type=\"button\" style=\"float:right;\" id=\"submitData\" onclick=\"Test()\" value=\"Submit\" /></p>");

Вот скрипт, который я использую для вызова действия контроллера:1008 *

Я хотел бы знать, если я делаю что-то не так, я пытаюсь заставить это работать несколько часов, но безуспешно.Когда я пытаюсь напрямую запустить контроллер через http://localhost:1322/Report/GetData, он работает нормально, так что это означает, что скрипт не настроен должным образом.Я ценю любую помощь.Заранее спасибо, Лазиале

Ответы [ 5 ]

2 голосов
/ 17 февраля 2012

Вы должны попробовать:

url:'@Url.Action("GetData", "Report")'

MVC автоматически добавит «Контроллер» в конец второго параметра при поиске контроллера.

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

Этот код может работать:

function Test() {
    $.ajax({
        type: "GET",
        dataType: "json",
        url: '@Url.Action("GetData", "Report")',
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            alert(data);
        },
        error: function(xhr, status, error) {
            alert(error);
        }
    });
}

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

Изменено использование синтаксиса Razor, чтобы этот код работал с Razor / MVC3.

1 голос
/ 17 февраля 2012

Вы используете синтаксис MVC-2 для Url.Action.Это должно работать:

function Test() {
  $.ajax(
    {
      url: '@Url.Action("GetData", "Report")',
      dataType: 'json',
      success: function (data) {
        alert(data);
      },
      error: function (x, err, desc) {
        alert(desc);
      }
    }
  );
};
0 голосов
/ 04 февраля 2013

Мы можем вызвать метод Controller, используя Javascript / Jquery, очень легко следующим образом:

Предположим, что следующим методом является метод Controller, который возвращает массив некоторых объектов класса.Пусть класс 'A'

public JsonResult SubMenu_Click(string param1, string param2)

    {
       A[] arr = null;
        try
        {
            Processing...
           Get Result and fill arr.

        }
        catch { }


        return Json(arr , JsonRequestBehavior.AllowGet);

    }

Ниже приведен комплексный тип (класс)

public class A
 {

  public string property1 {get ; set ;}

  public string property2 {get ; set ;}

}

Теперь он был вызван для вызова вышеуказанного метода контроллера JQUERY.Ниже приводится функция Jquery для вызова метода контроллера.

function callControllerMethod(value1 , value2) {
    var strMethodUrl = '@Url.Action("SubMenu_Click", "Home")?param1=value1  &param2=value2'
    $.getJSON(strMethodUrl, receieveResponse);
}


function receieveResponse(response) {

    if (response != null) {
        for (var i = 0; i < response.length; i++) {
           alert(response[i].property1);
        }
    }
}

В приведенной выше функции Jquery 'callControllerMethod' мы разрабатываем URL-адрес метода контроллера и помещаем его впеременная с именем 'strMehodUrl' и вызов метода getJSON API Jquery.

receieveResponse - это функция обратного вызова, получающая ответ или возвращаемое значение метода controllers.

Здесь мы использовали JSON, поскольку мы не можем использовать объект класса C #

непосредственно в функцию javascript, поэтому мы преобразовали результат (arr) в методе контроллера в JSONОбъект выглядит следующим образом:

Json (обр., JsonRequestBehavior.AllowGet);

и возвращает этот объект Json.

Теперьв функции обратного вызова Javascript / JQuery мы можем использовать этот результирующий объект JSON и работать соответственно для отображения данных ответа в пользовательском интерфейсе.

Для получения более подробной информации нажмите здесь

0 голосов
/ 21 апреля 2012

Вы также можете попробовать jsaction: http://jsaction.codeplex.com

0 голосов
/ 17 февраля 2012

Поскольку вы вызываете метод действия, который возвращает объект json, вы можете использовать метод jQuery.getJSON () .

<script type="text/javascript">
    function Test() {
        $.getJSON(
            '@this.Url.Action("GetData", "Report")',
            function (data) {
                alert(data);
            }
        });
    };
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...