数据未插入数据库

比奈·库玛(Binay Kumar)

我是ASP .NET MVC 4的新手。

我有一个文本框和要从一个表中获取的文本框值,但是在单击Submit按钮时,我想将此值插入到另一个表中,这不会插入并显示错误,它会将值作为null。

编码

看法

@Html.TextBox("empname", (string)ViewBag.empname, new { @readonly = "readonly" })

控制器

[HttpGet]
public ActionResult Facilities()
{
    mstEmpDetail emp = new mstEmpDetail();
    emp = db.mstEmpDetails.Single(x => x.intEmpId == 10001);
    ViewBag.empname = emp.txtEmpFirstName;

    return View();
}

[HttpPost]
public ActionResult Facilities(TrnBusinessCardDetail bc)
{
    var empname1 = ViewBag.empname;
    bc.txtfirstName = empname1;
    db.TrnBusinessCardDetails.Add(bc);
    db.SaveChanges();

    return RedirectToAction("Facilities");
}

当我使用普通文本框时,它可以正确插入,但是当我从数据库中检索时,出现此问题吗?如何解决这个问题呢 ?

萨默·阿扎齐(Sameer Azazi)

正如@dotnetom所建议的那样,ViewBag是一条单向街。MVC是无状态的,因此POST请求不是先前的get请求的“往返”。因此,您的ViewBag无法保持其状态。

MVC可以从“表单参数”中确定(并构造)您的操作参数。在您的情况下,您添加了一个名称为“ empname”的文本框。因此,您应该在POST请求中将此值作为参数获取。

 [HttpPost]
    public ActionResult Facilities(TrnBusinessCardDetail bc, string empname)
    {
        bc.txtfirstName = empname;
        db.TrnBusinessCardDetails.Add(bc);
        db.SaveChanges();

        return RedirectToAction("Facilities");
    }

鉴于您的问题,这将是最简单的解决方案。更合适的方法是直接将文本框与模型属性绑定。这样,您就不必担心在控制器中检索和分配属性值以进行建模。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章