我是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");
}
当我使用普通文本框时,它可以正确插入,但是当我从数据库中检索时,出现此问题吗?如何解决这个问题呢 ?
正如@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] 删除。
我来说两句