c# - MVC 4 Entity Framework 模型为空

标签 c# asp.net-mvc entity-framework asp.net-mvc-4

每次运行时,我的卡车 Controller 中都有这段代码。

我的模型总是空的。

    [HttpPost]
    public ActionResult AddTruck(TruckDataModel model)
    {
        var newTruck = new truck()
        {
            registration_no = model.reg_no,
            make = model.make,
            model = model.model,
            engine_no = model.engine_no,
            chassis_no = model.chassis_no,
            driver_name = model.driver_name,
            driver_no = model.driver_no,
            current_run = model.current_run,

        };

        if (ModelState.IsValid)
        {
            db.trucks.Add(newTruck);
            db.SaveChanges();
            return RedirectToAction("TruckList","Trucks");
        }

        return View(model);

这是我的模型

public class TruckDataModel
{         
    [Required(ErrorMessage = "Registration No. required", AllowEmptyStrings = false)]
    [Display(Name = "Registration No.")]
    public string reg_no { get; set; }

    [Required(ErrorMessage = "Make required", AllowEmptyStrings = false)]
    [Display(Name = "Make")]
    public string make { get; set; }

    [Required(ErrorMessage = "Model required", AllowEmptyStrings = false)]
    [Display(Name = "Model")]
    public string model { get; set; }

    [Required(ErrorMessage = "Engine No. required", AllowEmptyStrings = false)]
    [Display(Name = "Engine No.")]
    public string engine_no { get; set; }

    [Required(ErrorMessage = "Chassis No. required", AllowEmptyStrings = false)]
    [Display(Name = "Chassis No.")]
    public string chassis_no { get; set; }

    [Required(ErrorMessage = "Driver Name required", AllowEmptyStrings = false)]
    [Display(Name = "Driver Name")]
    public string driver_name { get; set; }

    [Required(ErrorMessage = "Current Run required", AllowEmptyStrings = false)]
    [Display(Name = "Current Run")]
    public int current_run { get; set; }

    [Required(ErrorMessage = "Driver no. required", AllowEmptyStrings = false)]
    [Display(Name = "Driver No.")]
    public int driver_no { get; set; }


}//just for allow to edit

我总是会出现 NullReference 异常,当我设置断点时,所有模型都为空。

我的 CreateUser 操作中有准确的代码,但它工作得很好吗? 非常需要帮助!

最佳答案

您的 TruckDataModel 模型有一个名为 model 的属性,您的 POST 方法参数也名为 model。你需要改变一个或另一个,比如说

public ActionResult AddTruck(TruckDataModel truck)
{
  ....
}

原因是 DefautModelBinder 首先初始化了一个 TruckDataModel 的实例。然后它读取表单数据,看到 model 的名称/值对,然后尝试将您的参数设置为其值(比如 model="Ford"),但失败了因此模型变为 null

关于c# - MVC 4 Entity Framework 模型为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241387/

相关文章:

c# - 在 Database First 中更改实体和属性名称

javascript - ASP.NET重构思路: TypeScript

c# - Arraylist 在从磁盘加载后无法比较对象

javascript - AngularJs 不渲染值

c# - 使用 Linq2Sql 在 C# asp.net MVC 中创建和更新多对多关系

c# - EF Core - 添加相关实体时出错

c# - 如何使用返回的 linq 变量?

c# - 如何制作表格以获取编辑其他表格中的值时的日期/时间?天猫

asp.net-mvc - 未启用“添加ASP.Net文件夹”

c# - Winform 与 EF Code First 和 Mysql