Существуют всевозможные сообщения о получении полей ввода из формы / div и их отправке на серверный контроллер.Я не совсем понимаю, как принять ввод на контроллере.
Я пробовал различные методы:
function SendEMail( vThis )
{
var vInput = $("#idEMailFields *").serializeArray();
$.ajax({
url: '@Url.Action( "SendEMail", "TournMaint")',
data: JSON.stringify(vInput),
type: 'POST',
contentType: 'application/json; charset=utf-8;',
dataType: 'json',
success: function (response)
{
$("#idEMailResponse").html(response);
return;
},
error: function( xhr, status, error )
{
debugger;
var verr = xhr.status + "\r\n" + status + "\r\n" + error;
alert( verr );
}
});
}
, где контроллер выглядит так:
[HttpPost]
public JsonResult SendEMail( CNameValue [] inputs )
{
String sView = "EMail messages queued";
return Json( sView, JsonRequestBehavior.AllowGet );
}
Класс CNameValue - мое собственное создание, так как я не нашелСтандарт, который будет делать то же самое.Должен быть стандартный класс словаря, который бы выбирал параметры по имени ??Мой вопрос: как это сделать ??
Второй вариант:
function SendEMail( vThis )
{
var params = {};
var v1 = $("#idEMailFields input[name=EMailAddressing], #idEMailFields input[type=hidden],#idEMailFields textarea");
$(v1).each( function(index)
{
params[this.name]=this.value;
});
$.ajax({
url: '@Url.Action( "SendEMail", "TournMaint")',
data: JSON.stringify(params),
type: 'POST',
contentType: 'application/json; charset=utf-8;',
dataType: 'json',
success: function (response)
{
debugger;
return;
},
error: function (x)
{
debugger;
alert(x.status);
}
});
}
Где контроллер выглядит так:
[HttpPost]
public JsonResult SendEMail( Int32 TournamentId, String EMailText, String EMailAddressing )
{
String sView = "return something usefull";
return Json( sView, JsonRequestBehavior.AllowGet );
}
Это неплохой способпереместить данные на сервер, но они подвержены изменениям в разметке бритвы, вызывающим взрыв контроллера.Я знаю, что вы никогда не избавитесь от этой проблемы, но подумать об уменьшении этой возможности.
Каков наилучший способ передачи данных экрана на контроллер на стороне сервера?