Null JSON GET ASP.NET MVC
本文关键字:NET MVC ASP GET JSON Null | 更新日期: 2023-09-27 18:06:12
嗨,我有两个控制器方法。我将两个参数从第一个方法传递到第二个方法。插入到数据库中的值是正确的,不是NULL。然而,当有返回Json行显示在网页上,他们出来为空,我不知道为什么?以下是控制器方法:
[HttpPost]
public void CalculateAndSaveToDB(BMICalculation CalculateModel)
{
if (ModelState.IsValid)
{
CalculateModel.Id = User.Identity.GetUserId();
CalculateModel.Date = System.DateTime.Now;
CalculateModel.BMICalc = CalculateModel.CalculateMyBMI(CalculateModel.Weight, CalculateModel.Height);
CalculateModel.BMIMeaning = CalculateModel.BMIInfo(CalculateModel.BMICalc);
db.BMICalculations.Add(CalculateModel);
db.SaveChanges();
}
CalculateAndSaveToDB(CalculateModel.BMICalc.ToString(), CalculateModel.BMIMeaning.ToString());
}
public JsonResult CalculateAndSaveToDB(string o, string t)
{
var data = new
{
CalculatedBMI = o,
CalculatedBMIMeaning = t
};
return Json(data, JsonRequestBehavior.AllowGet);
}
更新BMICalculationsModel:
public partial class BMICalculation
{
public string Id { get; set; }
public System.DateTime Date { get; set; }
public Nullable<double> BMICalc { get; set; }
[Required]
public double Height { get; set; }
[Required]
public double Weight { get; set; }
public int BMICalculationID { get; set; }
public virtual AspNetUser AspNetUser { get; set; }
public string BMIMeaning { get; set; }
public double CalculateMyBMI(double KG, double Height)
{
return KG / (Height * Height);
}
public string BMIInfo(double? BMI)
{
string BMIInfo = "";
if (BMI <= 18.5)
{
BMIInfo = "Underweight";
}
else if (BMI > 18.5 && BMI < 25)
{
BMIInfo = "Average";
}
else if (BMI > 25)
{
BMIInfo = "Overweight";
}
return BMIInfo;
}
}
您需要使您的第一个方法返回JsonResult
而不是void
。第二个CalculateAndSaveToDB
返回一个从未使用过的JsonResult。
我绝对不会调用第二个方法CalculateAndSaveToDB
,因为它不会将任何内容保存到DB。也许GenerateJsonCalc
更合适,或者根本没有方法:
[HttpPost]
public JsonResult CalculateAndSaveToDB(BMICalculation CalculateModel)
{
if (ModelState.IsValid)
{
CalculateModel.Id = User.Identity.GetUserId();
CalculateModel.Date = System.DateTime.Now;
CalculateModel.BMICalc = CalculateModel.CalculateMyBMI(CalculateModel.Weight, CalculateModel.Height);
CalculateModel.BMIMeaning = CalculateModel.BMIInfo(CalculateModel.BMICalc);
db.BMICalculations.Add(CalculateModel);
db.SaveChanges();
}
return CalculateAndSaveToDB(CalculateModel.BMICalc.ToString(), CalculateModel.BMIMeaning.ToString());
我想这样写:
return Json(new
{
CalculatedBMI = CalculateModel.BMICalc.ToString(),
CalculatedBMIMeaning = CalculateModel.BMIMeaning.ToString()
}, JsonRequestBehavior.AllowGet);
将POST方法的返回类型及其最后一行更改为:
public ActionResult CalculateAndSaveToDB(BMICalculation CalculateModel)
{
//stuff
return RedirectToAction("CalculateAndSaveToDB", new { o = CalculateModel.BMICalc.ToString(), t = CalculateModel.BMIMeaning.ToString());
}
try return一个动态对象
public dynamic CalculateAndSaveToDB(BMICalculation CalculateModel)
{
...
return CalculateAndSaveToDB(CalculateModel.BMICalc.ToString(), CalculateModel.BMIMeaning.ToString());
}
public dynamic CalculateAndSaveToDB(string o, string t)
{
dynamic data = new new ExpandoObject();
data.CalculatedBMI = o;
data.CalculatedBMIMeaning = t;
return data ;
}