У меня есть код ajax для asp.net (non-mvc) для вызова в webMethod для получения дополнительных данных из сервера для запроса. Но я, может казаться, не выясняю URL для предоставления моего JQuery в MVC.
Проблема была в теге webMethod на контроллере, который был нужен или полезен в asp.net, но не в asp.net mvc
Чтобы добавить к ответу Джейсона, можно также добавить , где 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
(без ограничений) является вашим ответом.
Если у вас есть Google Chrome, их инструменты разработчика имеют средство прослушивания событий, выберите элемент, который вы хотите шпионить за его событием.
Вы обнаружите, что попытки обоих способов приводят к одному и тому же результату, поэтому они эквивалентны.
-121--692044-Попробуйте отправить сообщение: Основной пример AJAX с ASP.NET MVC?
или этот: Как получить объект Json для раскрывающегося списка?
Они должны дать вам несколько указателей.
В сущности, $ .getJson - это метод jQuery, а не MVC, но используйте его в сочетании с контроллером MVC, возвращающим результат Json.
Думаю, у вас проблемы с построением 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", в зависимости от ваших маршрутов), и записать его.
Вы можете использовать $ .getJSON (url, [data], [callback (data)]), где data - это ваш возвращенный объект данных json.
В качестве альтернативы вы можете использовать $ .post (url, [data], [callback (data)]), где данные - это восстановленная вами строка / объект данных.
url: это относительный URL-адрес вашего контроллера / действия / скрипта, который возвращает json / data обратно.
Выше приведены методы jquery, которые можно использовать, если вы включили файл jquery js.
Это то, чем я занимаюсь в последнее время, и все работает нормально.
Получите корневой путь и сохраните его в скрытом поле ввода (замените [на <)
[input id = "urlBase" type = "hidden" value = "<% = Url.Content (" ~ ")%>" />
Получить значение этого ввода и сохранить его в js (в данном случае с помощью jquery)
_urlBase = $ ("# urlBase") .val ();
Используйте эту переменную для вызова контроллеров
$. ajax ({type: "GET", url: _urlBase + "Controller / Action", dataType: "json"});