【发布时间】:2018-08-10 11:41:02
【问题描述】:
我有以下 ajax 调用:
$.ajax({
url: "@Url.Action("GetMatch", "Test")",
data: {
Name: $("[name='Name']").val(),
Surname: $("[name='Surname']").val(),
Email: $("[name='Email']").val(),
},
dataType: "text",
type: "POST",
success: function (data, textStatus, jqXHR) {
alert(data.length);
if (data.length <= 13){
SaveQuote();
} else {
alert("matche")
}
});
控制器中的GetMatch动作如下:
[HttpPost]
public ActionResult GetClientMatch(ClientBusinessModel contactPerson)
{
*search for a list*
if (list.Count > 0)
{
return PartialView("~/Views/Shared/Partials/_Client.cshtml", list);
} else
return Json(new { data = contactPerson }, JsonRequestBehavior.AllowGet);
}
我想做的是成功后,如果列表不为空,则显示部分视图_Client.cshtml。还行吧。 但如果列表为空,请调用控制器的另一个操作:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateClient(SchoolModel school, ClientBusinessModel contactPerson, long QuotationId, long LeadId)
{
*some aciotns*
}
第一件事是我如何测试在 ajax 调用操作 GetClientMatch 时返回的数据是部分视图还是联系人? 现在,我正在对数据的长度进行测试。 还有如何保存表单数据和第一个ajax调用返回的contactPerson?
我的 SaveQuote 功能:
function SaveQuote() {
var obj = $('#frmSchool').serialize();
var jsonObj = @Html.Raw(Json.Encode(Model));
$.ajax({
type: "POST",
url: "@Url.Action("CreateClient", "Test")",
data: obj + "
Name: $("[name='Name']").val(),
Surname: $("[name='Surname']").val(),
Email: $("[name='Email']").val(),
success: function (data) {
$('#ProductInformation').html(data);
},
error: function (xhr, status, error) {
alert(error);
}
});
}
当第一个 ajax 调用中返回的列表为空时,如何使用表单数据和 contactPerson 模型点击控制器操作?
【问题讨论】:
-
提示:您需要使用
serializeArray()而不是serialize()才能推送更多数据。推送的数据仍然可以通过与serialize()一相同的方式发布。 -
@TetsuyaYamamoto : 我如何使用 serializeArray() 来处理表单数据和模型?
-
只需使用
var obj = $('#frmSchool').serializeArray();并使用一系列obj.push()方法来附加附加数据。然后在 AJAX 调用中使用data属性,如data: obj。
标签: c# ajax asp.net-mvc