使用Ajax调用重载方法



这是我的控制器

public ActionResult NPDAdd(NPD npd) //object model 
{
_purchaseOrderRepository.NPDInsertUpdate(npd);
return View();
}
public ActionResult NPDAdd(string npd) //string para
{
_purchaseOrderRepository.NPDInsertUpdate(npd);
return View();
}

这是我的存储库

public void NPDInsertUpdate(NPD npd)
{
DynamicParameters parameters = new DynamicParameters();
parameters.Add("NPDId", npd.NPDId);
parameters.Add("FGCode", npd.FGCode);
parameters.Add("SFGCode", npd.SFGCode);
parameters.Add("Plant", npd.Plant);
parameters.Add("M1Qty", npd.M1Qty);
parameters.Add("M2Qty", npd.M2Qty);
parameters.Add("M3Qty", npd.M3Qty);
parameters.Add("M4Qty", npd.M4Qty);
parameters.Add("M5Qty", npd.M5Qty);
parameters.Add("M6Qty", npd.M6Qty);
con.Query<NPD>("usp_NPD_Insert-Update", parameters, commandType: CommandType.StoredProcedure, commandTimeout: CommonConstants.CommandTimeOut).ToList();
}
public void NPDInsertUpdate(string scm) {
DynamicParameters para = new DynamicParameters();
para.Add("data", scm);
con.Open();
con.Query<NPD>("usp_NPD_Insert-Update", param: para, commandType: CommandType.StoredProcedure).ToList();
con.Close();
}

这是我的接口(我遵循了依赖注入(

void NPDInsertUpdate(NPD npd); //insert update
void NPDInsertUpdate(string npd);

这是ajax调用

$('body').on('click', '#sync', function () {
debugger;
if (final.length <= 0) {
alert("No Changes Done till now");
}
else {
$.ajax({
type: 'POST',
url: ROOT + "PurchaseOrder/NPDAdd",
dataType: "json",
data: { final: final },
success: function (i) {
//console.log(i)
},
complete: function (i) {
window.location.reload();
}
});
}
});
------
$.ajax({
type: "POST",
url: ROOT + 'PurchaseOrder/NPDAdd',
data: formdata,
complete: function () {
//load data
$.ajax({
url: ROOT + "PurchaseOrder/NPDListLoad",
type: 'POST',
dataType: 'JSON',
success: function (dataJson) {
npdListData = dataJson;
location.reload();
$("#npdListGrid").jqGrid().setGridParam({
datatype: 'local',
data: npdListData
}).trigger('reloadGrid');
$('#modal-addNPD').modal('hide');
}
});
}
});

这里依赖于它应该调用的特定方法"的参数;NDPAdd";请帮我解决

参数可以是字符串或模式

但在ajax本身,不是命中,请帮我解决

我尝试了很长时间,但无法解决

相反,您可以使用相同的方法来区分内部的行为,如下所示:

public ActionResult NPDAdd([FromBody] JObject json) //object model 
{
if (json["npd"] != null)
{
if (json["npd"].Type == JTokenType.String)
{
string npd = json["npd"].ToString();
_purchaseOrderRepository.NPDInsertUpdate(npd);
}
else
{
string npd = json["npd"].ToObject<NPD>();
_purchaseOrderRepository.NPDInsertUpdate(npd);
}
}
return View();
}

我已经完成了使用https://www.newtonsoft.com/json但只是针对图书馆的概念如何做到这一点。

最新更新