Я наконец экспериментирую и пытаюсь изучить 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 для возражения?
Это зависит от того, насколько сложными будут данные вашей формы. Давайте воспользуемся примером 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, а затем вы можете взять любые значения формы, которые захотите, и поместить их в любое свойство вообще, или вызвать какой-либо другой вид логики.
Вы можете сделать что-то вроде этого:
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 в качестве параметра, чтобы вы могли обрабатывать всю свою проверку.
Когда вы размещаете форму через ajax в методе действия на вашем контроллере, архитектура ModelBinder выполняет синтаксический анализ отправленных значений формы на бизнес-объекты. Вы можете использовать привязку моделей несколькими способами.
public ActionResult MyAction(MyObject obj)
{
}
В приведенном выше примере привязка моделей неявно пытается создать MyObject
из информации, полученной в запросе.
public ActionResult MyAction(FormCollection stuff)
{
MyObject obj = new MyObject();
TryUpdateModel(obj);
}
Здесь мы явно пытаемся привязать данные опубликованной формы к созданному нами объекту. ModelBinder попытается сопоставить опубликованные значения со свойствами объекта.
В любом из этих случаев вы можете запросить объект ModelState
, чтобы узнать, не возникли ли какие-либо ошибки во время преобразования отправленных значений в объект.
Введение в связывание моделей см. Здесь .
Дополнительные сведения о привязке моделей к спискам и словарям см. В сообщении Фила Хаака .
У меня есть сообщение, посвященное вызовам AJAX методов действий ASP.NET MVC. Он охватывает следующие комбинации:
Вызов AJAX в методы действий ASP.NET MVC с использованием jQuery