入力フィールドをフォーム/ 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);
}
});
}
:私は同じことをするだろう標準を見つけられませんでしたので、CNameValueクラスは、私自身の創造である
[HttpPost]
public JsonResult SendEMail(CNameValue [] inputs)
{
String sView = "EMail messages queued";
return Json(sView, JsonRequestBehavior.AllowGet);
}
もの。パラメータを名前で選択する標準の辞書クラスが必要ですか?私の質問は、これをどうやってやるのですか?
セカンドバリエーション:
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);
}
コントローラーを吹かせる。私はあなたがその問題から離れないことを知っていますが、可能性を減らすことは考えです。
サーバサイドコントローラに画面データを取得する最も良い方法は何ですか?