I got my previous question which is quite the same. Passing data from ajax to mvc controller - null parameter error
We've changed some things in interface and javascript after it. So now I get this error, when I try to pass data on server
The parameters dictionary contains a null entry for parameter 'method' of non-nullable type 'API.PVT.Solver.Methods' for method 'System.Web.Mvc.ActionResult StandartModelResult(API.PVT.Solver.InputDataModel, API.PVT.Solver.Methods, API.PVT.Solver.DefaultConstants)' in 'WebServices.Controllers.PVT.PVTMethodsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter
Here's my client side request
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;
}
Here's how json looks like:
"{"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}}"
Here's server side models
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; }
}
Here's server side controller method
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);
}
What's wrong here? It's even can't reach server now, I mean the request. What could help?