下面的代码对我有用,但是我试图找到一种方法来从表单中读取所有值,而不必在JavaScript中重新创建视图模型(vm是参数的名称)对象)。
我尝试序列化表单并将其传入,但也许我的语法不正确。
有什么建议吗?
$.ajax({
type: "POST",
dataType: "json",
url: "/post-details-save",
data: addAntiForgeryToken({
vm: ({
Id: $("#PostImageDetails_Id").val(),
Title: $("#PostImageDetails_Title").val(),
Description: $("#PostImageDetails_Description").val(),
CopyrightOwner: $("#PostImageDetails_CopyrightOwner").val(),
CopyrightUrl: $("#PostImageDetails_CopyrightUrl").val(),
SourceName: $("#PostImageDetails_SourceName").val(),
SourceUrl: $("#PostImageDetails_SourceUrl").val(),
SourceLicenseType: $("#PostImageDetails_SourceLicenseType").val()
})
}),
success: postDetailsSaveSuccess,
error: postDetailsSaveError
});

答案 0 :(得分:0)
@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post, new { @id = "formID" }))
我在部分视图中提交表单时做了类似的事情。
基本上,您需要确认您的html表单设置正确:
AntiForgeryToken
@Html.AntiForgeryToken()
数据字段
看起来类似于以下内容,名称属性很重要。
<input type="hidden" name="ApproveUserID" id="ApproveUserID" value="@Model.ApproveUserID" />
AJAX表格
如果您的表单设置正确,如上所述,您将能够通过AJAX提交数据,类似于下面的JS。
var form = $("#formID");
$.ajax({
url: form.attr('action'),
type: form.attr('method'),
data: form.serialize(), // data to be submitted
success: function (response) {
if (response == "Success") {
//DO SUCCESS STUFF
} else
{
//DO FAILURE STUFF
}
},
error: function () {
//DO ERROR STUFF
}
});
专业提示:
您始终可以通过
扩展您发送的数据var formData = form.serialize();
进入一个变量并从那里扩展它。
祝你好运。