Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 插入成功,但插入的值在后端ms sql数据库中显示为NULL_C#_Asp.net_Sql Server_Asp.net Mvc_Ef Code First - Fatal编程技术网

C# 插入成功,但插入的值在后端ms sql数据库中显示为NULL

C# 插入成功,但插入的值在后端ms sql数据库中显示为NULL,c#,asp.net,sql-server,asp.net-mvc,ef-code-first,C#,Asp.net,Sql Server,Asp.net Mvc,Ef Code First,我有一个简单的mvc5代码优先应用程序,它在后端有一个ms SQL数据库,在前端有一个表单 虽然我通过前端表单插入数据库,但它不会生成任何错误,一切看起来都正常,但当我检查后端数据库表时,新插入行中的所有值都显示为NULL 这是我的模型代码: public class students { public int Id { get; set; } [Display(Name = "Name")] public string st_name { get; set; }

我有一个简单的mvc5代码优先应用程序,它在后端有一个ms SQL数据库,在前端有一个表单

虽然我通过前端表单插入数据库,但它不会生成任何错误,一切看起来都正常,但当我检查后端数据库表时,新插入行中的所有值都显示为NULL

这是我的模型代码:

public class students
{
    public int Id { get; set; }

    [Display(Name = "Name")]
    public string st_name { get; set; }

    [Display(Name = "Father's Name")]
    public string st_father_name { get; set; }

    public string  st_contact { get; set; }
}
这是视图模型类:

public class AddStudentViewModel
{
    public students stdntss { get; set; }
}
这是控制器:

public ActionResult Index()
{
    var std = _context.stdnts;
    if (std==null)
    {
        return Content("Nothing Found");
    }
    return View(std);
}


public ActionResult AddStudent()
{

    return View();
}

[HttpPost]
public ActionResult Insert(students st)
{
    _context.stdnts.Add(st);
    _context.SaveChanges();
    return RedirectToAction("Index","Students");
}
最后,这是一种观点:

@model school2.ViewModels.AddStudentViewModel
@{
ViewBag.Title = "AddStudent";
Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>New student's registration form</h2>



@using (Html.BeginForm("Insert","Students"))
{
<div class="form-group">

   @Html.LabelFor(m=> m.stdntss.st_name)
   @Html.TextBoxFor(m=> m.stdntss.st_name, new { @class="form-control"})
</div>
<div class="form-group">

    @Html.LabelFor(m => m.stdntss.st_father_name)
    @Html.TextBoxFor(m => m.stdntss.st_father_name, new { @class = "form-control" })

</div>


<div class="form-group">

    @Html.LabelFor(m => m.stdntss.st_contact)
    @Html.TextBoxFor(m => m.stdntss.st_contact, new { @class = "form-control" })

</div>
<button type="submit" class="btn btn-primary">Save</button>
}

如果有人有任何线索,请帮助我?

解决此问题的一种方法是更改POST方法以接受与视图相同的模型

试着改变

public ActionResult Insert(students st)
{
    _context.stdnts.Add(st);
    _context.SaveChanges();
    return RedirectToAction("Index","Students");
}


或者将表单的模型更改为学生。

我认为更改@Html.TextBoxFormodel=>model.stdntss.st_name,新的{@class=formcontrol}。因为调用Model,@Model school2.ViewModels.AddStudentViewModel。变量默认模型

第一件事:提交表格后,st有什么?。显然,这只是一个指导原则,但是其他开发者可能会感到困惑,为什么属性的大小写较低,例如st_father_name而不是StFatherName它不需要。根据现有的课程,这是一种方法,但是说“需要”听起来像是必需的/唯一的方法,而不是。@Dale_dale12非常感谢,你的技巧解决了这个问题problem@ErikPhilips,说得好,为了反映这一点,我稍微改变了措辞。请努力提高你的回答的理解力。阅读帮助页面,并尝试在将来改进格式。
  public ActionResult Insert(AddStudentViewModel st)
  {
      _context.stdnts.Add(st.stdntss );
      _context.SaveChanges();
      return RedirectToAction("Index","Students");
  }