Как Вы передали бы объекты с Ajax jQuery и MVC?

Я наконец экспериментирую и пытаюсь изучить MVC после лет asp.net.
Я привык использовать asp.net AJAX PageMethods, куда можно передать объект, который автоволшебно анализируется к любому типу, параметр находится в том методе.

JavaScript:

PageMethods.AddPerson({First:"John",Last:"Doe"});

Код - Позади:

[WebMethod]
public static Result AddPerson(Person objPerson)
{
    return Person.Save();
}

Как сделал бы это использование MVC и jQuery?
Действительно просто должен был отправить строки и проанализировать json для возражения?

5
задан Kenneth J 27 April 2010 в 17:25
поделиться

4 ответа

Это зависит от того, насколько сложными будут данные вашей формы. Давайте воспользуемся примером jQuery:

$.ajax({
    url: '\Persons\AddPerson', // PersonsController, AddPerson Action
    data: { First: "John", Last: "Doe" },
    type: 'POST',
    success: function(data, status)
    {
        alert('Method called successfully!');
    }
});

Итак, мы публикуем два фрагмента данных. Если у класса Person есть два свойства с именами «Первое» и «Последнее», то связующее устройство модели ASP.NET MVC по умолчанию не должно иметь проблем с помещением этих данных формы в эти свойства (все остальное будет по умолчанию).

Конечно, вы всегда можете создать собственный связыватель модели для типа Person, а затем вы можете взять любые значения формы, которые захотите, и поместить их в любое свойство вообще, или вызвать какой-либо другой вид логики.

4
ответ дан 14 December 2019 в 13:30
поделиться

Вы можете сделать что-то вроде этого:

 var person = {};
 person["First"] = $("#FirstName").val();
 person["Last"] = $("#LastName").val();

 $.ajax({
      type: "POST",
      contentType: "application/json; charset=utf-8",
      url: "/Admin/AddPerson",
      data: JSON.stringify(person),
      dataType: "json",
      success: function(result) {

      },
      error: function(result) {

      }
 });

, а затем на вашем контроллере администратора:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddRelease(Person p)
{
    // Code to add person            

}

Метод JSON.stringify доступен из здесь . Вы также можете использовать модель, а не объект Person в качестве параметра, чтобы вы могли обрабатывать всю свою проверку.

0
ответ дан 14 December 2019 в 13:30
поделиться

Когда вы размещаете форму через ajax в методе действия на вашем контроллере, архитектура ModelBinder выполняет синтаксический анализ отправленных значений формы на бизнес-объекты. Вы можете использовать привязку моделей несколькими способами.

public ActionResult MyAction(MyObject obj)
{
}

В приведенном выше примере привязка моделей неявно пытается создать MyObject из информации, полученной в запросе.

public ActionResult MyAction(FormCollection stuff)
{
   MyObject obj = new MyObject();
   TryUpdateModel(obj);
}

Здесь мы явно пытаемся привязать данные опубликованной формы к созданному нами объекту. ModelBinder попытается сопоставить опубликованные значения со свойствами объекта.

В любом из этих случаев вы можете запросить объект ModelState , чтобы узнать, не возникли ли какие-либо ошибки во время преобразования отправленных значений в объект.

Введение в связывание моделей см. Здесь .

Дополнительные сведения о привязке моделей к спискам и словарям см. В сообщении Фила Хаака .

0
ответ дан 14 December 2019 в 13:30
поделиться

У меня есть сообщение, посвященное вызовам AJAX методов действий ASP.NET MVC. Он охватывает следующие комбинации:

  • HTTP GET, POST
  • методы jQuery $ .get, $ .getJSON, $ .post
  • Отправка параметров в методы действия
  • Возвращение параметров (строк и JSON) из методы действий
  • Отправка данных формы
  • Загрузка частичного представления MVC через AJAX

Вызов AJAX в методы действий ASP.NET MVC с использованием jQuery

2
ответ дан 14 December 2019 в 13:30
поделиться
Другие вопросы по тегам:

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