为什么 ActionResult 方法不从 Html.BeginForm() 内部的视图中获取任何参数?

问题描述

我尝试创建一个名为 PersonalJobManagement 的数据库,其中包含我员工的信息。 我想编写一个 ASP.NET MVC 网站来编辑、删除或为此数据库创建新数据。

但问题来了: 我编写了创建视图,输入了名称或 ID 等参数,但参数未处理到数据库中。已经添加了 8 个员工,我无法添加第 9 个。

我在控制器中的创建方法

public ActionResult Create()
{
     return View();
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Person model)
{
     db.Person.Add(model);
     db.SaveChanges();
     return RedirectToAction("List");
}

我的创建视图:

       @using (Html.BeginForm())
       {
           @Html.AntiForgeryToken()
           <div>
               <div>
                   <b>Name</b>
                   <div>
                       @Html.EditorFor(model => model.FirstName,new { htmlAttributes = new {} })
                       @Html.ValidationMessageFor(model => model.FirstName,"",new {})
                   </div>
               </div>
               <div>
                   <div>
                       <input type="submit" value="Save it"/>
                   </div>
               </div>
           </div>
       }

还有我的 Person 模型:

public partial class Person
   {
       public int BusinessEntityID { get; set; }
       public string PersonType { get; set; }
       public string Title { get; set; }
       public string FirstName { get; set; }
       public string MiddleName { get; set; }
       public string LastName { get; set; }
       public System.DateTime ModifiedDate { get; set; }
   
       public virtual BusinessEntity BusinessEntity { get; set; }
   }

解决方法

成功了! 我的 ~/Views/Shared/_Layout.cshtml 文件有一个表单标签,我不知道为什么,但它在调用 POST 方法时会导致错误。所以,如果你在这里,要小心