Nano Hash - криптовалюты, майнинг, программирование

Использование jQuery для вызова действия контроллера

У меня есть хорошая страница, которая делает все, что мне нужно. Однако один из элементов (частичная страница) загружается на несколько секунд дольше, чем я хотел бы. Итак, что я хотел бы сделать, так это сначала показать страницу без этого частичного, но вместо этого показать «загрузку» gif. Затем в моем jquery...

$(document).ready(function() {

   // Call controller/action (i.e. Client/GetStuff)

});

Я хотел бы вызвать действие моего контроллера, которое возвращает PartialView и обновляет содержимое моего div. В основном он вызывает частичную загрузку асинхронно при загрузке. Я мог бы сделать это просто с помощью ActionLink, пока не дойдет до того, что я хотел бы сделать это при загрузке. Если я использую jQuery для вызова типа onloand, могу ли я вообще вернуть PartialView?


Ответы:


1

Просто используйте $.load:

$(document).ready(function() {    
   $('#myDiv').html('<img src="loading.gif"/>')
              .load('Client/GetStuff');   
});

Это заменит содержимое div id="myDiv" вашим индикатором загрузки, а затем вставит в него вывод Client/GetStuff.

26.08.2009
  • Итак, я реализовал это: $('#refreshGrid').load('/Client/GetAttachments?id=' + clientID); Мой клиентский контроллер выглядит так: public ActionResult GetAttachments(int id) { // Немного логики... return PartialView(~/Views/Client/ClientAttachmentGridView.ascx, files); } alert($('#refreshGrid')) дает мне объект, а alert(clientID) дает мне то, что я ожидаю. Контроллер не получает удара (иначе я бы увидел некоторые вызовы веб-службы от скрипача). Раздражает то, что я не вижу никаких сообщений об ошибках. 27.08.2009
  • Ооо, я беру это обратно. Я получаю 500 в fiddler: словарь параметров содержит нулевую запись для параметра «id» ненулевого типа «System.Int32» для метода «System.Web.Mvc.ActionResult GetAttachments (Int32)» в «CommercialLendingPlatform.Controllers». .КлиентКонтроллер». Чтобы сделать параметр необязательным, его тип должен быть либо ссылочным, либо нулевым.‹br›Имя параметра: параметры 27.08.2009
  • Чудесный! Вместо этого мне нужно было сделать это Client/GetAttachments/clientID! На секунду забыл о маршрутизации URL. Спасибо всем! 27.08.2009

  • 2

    Я верю, что ты можешь. Раньше я использовал jQuery для получения JSON от контроллера ASP.NET MVC, и это один из самых приятных способов передачи данных клиенту.

    Я уверен, что получить частичное представление может быть так же просто, как использовать методы jQuery "load", "get" или "post":

    Используя Загрузить:

    $("#feeds").load("test.aspx");
    

    Используя Get:

    $.get("test.aspx", function(data){
      alert("Data Loaded: " + data);
    });
    

    Используя Post:

    $.post("test.aspx", function(data){
      alert("Data Loaded: " + data);
    });
    
    26.08.2009

    3
    $.ajax("MyController/MyAction", function(data) {
        alert(data);
    });
    

    Это действительно простой пример; вы просто вызываете контроллер с помощью AJAX, а затем можете вставлять данные в DOM или делать с ними что-то еще.

    26.08.2009

    4

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

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

    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 Jquery API.

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

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

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

    Json(обр, JsonRequestBehavior.AllowGet);

    и вернул этот объект Json.

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

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

    04.02.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..