有各種類型的帖子,關於從form/div獲取輸入字段並將它們發送到您的服務器端控制器。我不清楚的是如何接受控制器的輸入。ASP.NET MVC Razor - 將數據發送到控制器
我已經嘗試了各種方法:
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);
}
這並不是將數據移動到服務器一個壞的方式,但它易於在剃刀標記變化導致控制器爆炸。我知道你永遠不會擺脫這個問題,但減少可能性是一個想法。
什麼是獲取屏幕數據到服務器端控制器的最佳方式是什麼?