Как я называю метод контроллера из JQuery?

У меня есть код ajax для asp.net (non-mvc) для вызова в webMethod для получения дополнительных данных из сервера для запроса. Но я, может казаться, не выясняю URL для предоставления моего JQuery в MVC.

  
    

    

5 ответов

Проблема была в теге webMethod на контроллере, который был нужен или полезен в asp.net, но не в asp.net mvc

0
ответ дан 7 December 2019 в 07:45
поделиться

Чтобы добавить к ответу Джейсона, можно также добавить , где T: IEquatable < T > , а не IComparable . Это обеспечивает перегрузку метода Equals , который принимает параметр T .

public class WidgetBox<A,B,C> where B : IEquatable<B>
{
    public bool ContainsB(B b)
    {
        // Iterating thru a collection of B's
        if( b.Equals(iteratorB) )
        ...
    }
}

Это может быть предпочтительнее, чем просто использовать предоставленный метод Object.Equals , поскольку он проверяет эквивалентность двух объектов , ссылающихся на (я полагаю), и поэтому может не обеспечить нужную функциональность (например, если вы хотите, чтобы два объекта Person с одним и тем же свойством SSN рассматривались как равные или как нечто подобное).

Но чтобы ответить на ваш вопрос «как все коллекции .NET делают это», я считаю, что метод Equals (без ограничений) является вашим ответом.

-121--4648323-

Если у вас есть Google Chrome, их инструменты разработчика имеют средство прослушивания событий, выберите элемент, который вы хотите шпионить за его событием.

Вы обнаружите, что попытки обоих способов приводят к одному и тому же результату, поэтому они эквивалентны.

-121--692044-

Попробуйте отправить сообщение: Основной пример AJAX с ASP.NET MVC?

или этот: Как получить объект Json для раскрывающегося списка?

Они должны дать вам несколько указателей.

В сущности, $ .getJson - это метод jQuery, а не MVC, но используйте его в сочетании с контроллером MVC, возвращающим результат Json.

3
ответ дан 7 December 2019 в 07:45
поделиться

Думаю, у вас проблемы с построением URL-адресов. Если у вас нет косой черты перед URL-адресом, он будет относиться к вашему текущему URL-адресу. Итак, если текущий URL-адрес: / Home / Index и у вас есть такая ссылка: Текст , тогда эта ссылка будет укажите следующий URL: / Home / Index / Ticket / CheckForInstaller . Это всегда поведение в браузере. То же самое происходит, если у вас есть страница в папке в приложении веб-форм. С URL-адресом asp.net mvc ничем не отличается от любого другого веб-фреймворка. Вероятно, вам нужен следующий URL: / Ticket / CheckForInstaller .

Однако фреймворк asp.net mvc предоставляет вам помощников, так что вам не нужно жестко кодировать какой-либо URL. Вы можете сделать это следующим образом:

<%=Url.Action("Ticket", "CheckForInstaller")%>

Но единственное, что это будет делать, - это найти соответствующий URL-адрес, указывающий на это действие ("/ Ticket / CheckForInstaller", в зависимости от ваших маршрутов), и записать его.

2
ответ дан 7 December 2019 в 07:45
поделиться

Вы можете использовать $ .getJSON (url, [data], [callback (data)]), где data - это ваш возвращенный объект данных json.

В качестве альтернативы вы можете использовать $ .post (url, [data], [callback (data)]), где данные - это восстановленная вами строка / объект данных.

url: это относительный URL-адрес вашего контроллера / действия / скрипта, который возвращает json / data обратно.

Выше приведены методы jquery, которые можно использовать, если вы включили файл jquery js.

1
ответ дан 7 December 2019 в 07:45
поделиться

Это то, чем я занимаюсь в последнее время, и все работает нормально.

  1. Получите корневой путь и сохраните его в скрытом поле ввода (замените [на <)

    [input id = "urlBase" type = "hidden" value = "<% = Url.Content (" ~ ")%>" />

  2. Получить значение этого ввода и сохранить его в js (в данном случае с помощью jquery)

    _urlBase = $ ("# urlBase") .val ();

  3. Используйте эту переменную для вызова контроллеров

    $. ajax ({type: "GET", url: _urlBase + "Controller / Action", dataType: "json"});

1
ответ дан 7 December 2019 в 07:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: