Javascript 通过ajax传递数据-参数字典包含参数的空条目
我得到了我以前的问题,这是完全相同的。 之后,我们在界面和javascript中做了一些更改。所以,当我试图在服务器上传递数据时,我得到了这个错误 参数字典包含参数“方法”的空条目 方法的不可为Null的类型“API.PVT.Solver.Methods” 'System.Web.Mvc.ActionResult 标准模型结果(API.PVT.Solver.InputDataModel, API.PVT.Solver.Methods,API.PVT.Solver.DefaultConstants)中的 “WebServices.Controllers.PVT.pvtMethodController”。可选的 参数必须是引用类型、可为null的类型或声明为 可选参数 这是我的客户端请求Javascript 通过ajax传递数据-参数字典包含参数的空条目,javascript,c#,ajax,json,asp.net-mvc,Javascript,C#,Ajax,Json,Asp.net Mvc,我得到了我以前的问题,这是完全相同的。 之后,我们在界面和javascript中做了一些更改。所以,当我试图在服务器上传递数据时,我得到了这个错误 参数字典包含参数“方法”的空条目 方法的不可为Null的类型“API.PVT.Solver.Methods” 'System.Web.Mvc.ActionResult 标准模型结果(API.PVT.Solver.InputDataModel, API.PVT.Solver.Methods,API.PVT.Solver.DefaultConstant
GetServerData:function(inputData) {
var outputData;
$.ajax({
type: 'POST',
url: "/PVTMethods/StandartModelResult",
data: JSON.stringify(inputData),
success: function (data) {
outputData = data.result;
appl.PlotData = data.result;
},
error: function (data) {
console.log("Error" + data);
},
dataType: "json",
contentType: "appllication/json; charset=utf-8",
});
return outputData;
}
以下是json的外观:
"{"method":"eMcCain","model":{"task":"eBw","temperatureRanges":{"Start":200,"End":1000,"Samples":30}},"constants":{"ProducedGOR":500,"OilGravity":35,"SeparatorGasGravity":0.7,"StockTankOilGravity":0.84985,"WaterSalinity":20}}"
以下是服务器端模型
public class DefaultRanges
{
public virtual double Start { get; set; } //начало отрезка
public virtual double End { get; set; } //конец отрезка
public virtual double Samples { get; set; } //шаги
}
//константы
public class DefaultConstants
{
public virtual double ProducedGOR { get; set; }
public virtual double OilGravity { get; set; }
public virtual double SeparatorGasGravity { get; set; }
public virtual double StockTankOilGravity { get; set; }
public virtual double WaterSalinity { get; set; }
}
//pressure rate (pisa)
public class PressureDefaultRanges : DefaultRanges { }
//temperature ranges (Фаренгейты если чо)
public class TemperatureDefaultRanges : DefaultRanges { }
public class PlotRanges : DefaultRanges
{
public virtual double PlotConstant { get; set; } //GOR или Pressure
}
// w\ pressure
public class PlotRangesWP : PlotRanges
{
public virtual double Pressure { get; set; }
}
// w\ GOR
public class PlotRangesWGOR : PlotRanges
{
public virtual double GOR { get; set; }
}
//решаемые задачи
public enum Tasks { ePb, eRs, eBo, eBg, eMo, eMg, eMod, eBw, eMw, eRsw };
//применяемые методы
public enum Methods
{
eAbdulMajeed,//+
eAlShammasi,//+
eAlKhafaji,//+
eAlMarhoun,//+
eAlMarhounSA,//+
eAlmehaideb,//+
eAlNajjaretal,/
eAziz,//+
eBeal,//+
eBeggsRobinson,//+
eBeggsVazquez,//+
eBergman,//+
eDempsey,//+
eDindorukChristman,//+
eDoklaOsman,//+
eElam,//+
eElsharkawy,
eFarshad,//+
eGlaso,//+
eHasan,//+
eKartoatmodjoSchmidt,//+
eKhairy,//+
eKhanEtAl,//dead oil viscosity пока не нужен
eLabediL,//+
eLabediNA,//+
eLasater,//+
eLeeGonzales,//+
eLevitanMurtha,//+
eLucas,//+
eMcCain,//+
eMakary,//+
eObomanuOkpobiri,
eOmarTodd,//+
eOwolabiCI,//+
eOwolabiNS,//+
ePetrosky,//+
eSchlumbergerKuwait,//?
eStanding//+
};
public class InputDataModel
{
public Tasks task { get; set; }
public PressureDefaultRanges pressureRanges { get; set; }
public TemperatureDefaultRanges temperatureRanges { get; set; }
public PlotRanges currentTaskPlotRanges { get; set; }
public double plotConstant { get; set; }
}
下面是服务器端控制器方法
public ActionResult StandartModelResult(InputDataModel model , Methods method, DefaultConstants constants = null)
{
SolverInit(constants);
SetDeafultSettings(); //стандартные настройки методов
//var method = Methods.eMcCain;
PVTMethodsSolver.PVTSolverTaskMethodSettings(model.task, method);
var currentResult = resultArray(model);
return Json(new { result = currentResult, status = "ok"}, JsonRequestBehavior.AllowGet);
}
这里怎么了?
现在连服务器都打不到,我是说请求。有什么可以帮忙的 像这样更改ajax代码,它就开始工作了
GetServerData:function(inputData) {
var outputData;
$.ajax({
type: 'POST',
async: false,
url: "/PVTMethods/StandartModelResult",
data: inputData,
// async: true,
success: function (data) {
outputData = data.result;
appl.PlotData = data.result;
},
error: function (data) {
console.log("Error" + data);
},
dataType: "json",
// contentType: "appllication/json; charset=utf-8"
});
return outputData;
}
如果有人遇到这个问题,请记住,这个答案是针对MVC控制器的;如果您使用的是WebAPI控制器,则此答案无效,