【问题标题】:Insert succeeds but the inserted value shows NULL in the back end ms sql database插入成功,但插入的值在后端 ms sql 数据库中显示为 NULL
【发布时间】:2017-10-18 17:49:03
【问题描述】:

我有一个简单的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>
}

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

【问题讨论】:

标签: c# asp.net sql-server asp.net-mvc ef-code-first


【解决方案1】:

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

尝试改变

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

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

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

【讨论】:

  • 不需要。根据可用的类,这是一种方法,但说 need 听起来像是必需的/不是的唯一方法。
  • @Dale_dale12 非常感谢,您的技术解决了问题
  • @ErikPhilips,好点,我稍微改变了措辞以反映这一点
【解决方案2】:

我认为更改 @Html.TextBoxFor(model=> model.stdntss.st_name, new { @class="form-control"})。因为调用模型,@model school2.ViewModels.AddStudentViewModel。可变默认模型。

【讨论】:

  • 请尽量提高您对答案的理解。阅读帮助页面并尝试在未来改进格式。
猜你喜欢
  • 2015-01-01
  • 1970-01-01
  • 2014-12-04
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2011-12-25
相关资源
最近更新 更多