jquery ajaxでmvc 3アクションメソッドを呼び出そうとしています。ajaxで部分ビューを生成していて、生成された部分ビューで再びajaxを呼び出していることに注意してください(ネストされたajax呼び出しのようなものです)。ここに私のコードがあります:
部分的なビュー:
@model MYWeb.UI.Models.ClientDetailsViewModel
ビュー内の JavaScript:
<script type="text/javascript">
$(document).ready(function () {
$("#savedetails@(i)").click(function () {
var clientNumber = $('#ClientNumber@(i)').val();
var clientName = $('#ClientName@(i)').val();
var client =
{
ClientNumber: clientNumber,
ClientName: clientName
};
alert(JSON.stringify(client));
$.ajax({
url: '/Home/ClientUpdate',
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(client),
beforeSend: function () {
$("#loader@(i)_details").fadeIn('fast');
},
complete: function () {
$("#loader@(i)_details").fadeOut('fast');
},
success: function () {
$("#loader@(i)_details").fadeOut('fast');
if ($("#ModelFirstError").val())
showModelMessageError;
else
showUpdateMessageSuccess();
},
error: function () {
$("#loader@(i)_details").fadeOut('fast');
showUpdateMessageError();
},
async: true,
processData: false
});
});
});
モデル オブジェクト:
public class ClientDetailsViewModel
{
[Display(ResourceType = typeof(adm), Name = "ClientNumber")]
public int ClientNumber { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessageResourceName = "RequiredClientName", ErrorMessageResourceType = typeof(adm))]
[Display(ResourceType = typeof(adm), Name = "ClientName")]
public string ClientName { get; set; }
more fields...
}
アクションメソッド:
[Authorize]
[HttpPost]
public ActionResult ClientUpdate(ClientDetailsViewModel client)
{}
この更新の試みは、常に ajax エラーを返します。私は何を間違っていますか?
編集:
アクション メソッドのパラメーターを削除すると、それが呼び出されることに気付きました。しかし、どうすればこの方法でモデルを渡すことができますか?
[Authorize]
[HttpPost]
public ActionResult ClientUpdate()
{}