Asp.net mvc 4 数据未插入到数据库中

Asp.net mvc 4 数据未插入到数据库中,asp.net-mvc-4,Asp.net Mvc 4,我是asp.NETMVC4新手 我有一个文本框和从一个表中提取的文本框值。但是,当单击“提交”按钮时,我想将该值插入到不同的表中,这不是插入并显示错误。它将值设为null 编码 查看 @Html.TextBox("empname", (string)ViewBag.empname, new { @readonly = "readonly" }) 控制器 [HttpGet] public ActionResult Facilities() { mstEmpDetail emp = new

我是asp.NETMVC4新手

我有一个文本框和从一个表中提取的文本框值。但是,当单击“提交”按钮时,我想将该值插入到不同的表中,这不是插入并显示错误。它将值设为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");
}
当我使用普通文本框时,它被正确插入,但当我检索到 fro DB那我就有这个问题了?
如何解决这个问题

我认为问题在于使用
var empname1=ViewBag.empname在post controller中,因为
ViewBag.empname
当时丢失了它的值。

ViewBag是一条单行道-您可以使用它向视图传递信息,但不能使用它从视图获取信息。POST方法中的语句
ViewBag.empname
在代码中的值为null。

正如@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");
    }
考虑到您的问题,这将是最简单的解决方案。更合适的方法是直接将文本框与模型属性绑定。这样,您就不必担心在控制器中检索属性值并将其分配给模型

你在使用什么数据库?你能告诉我们你用来连接数据库的连接字符串吗??