我在详情视图中有这个:UI Snapshot
此详细信息来自上一页。现在我想将更改的元素保存回DB。我怎么做?我在我的家庭控制器类上有这个:
[HttpPost]
public ActionResult UpdateItem (Employee model)
{
var getEmployee = storeDB.Employees.SingleOrDefault( c=>c.Id == model.Id);
getEmployee.Name = model.Name.ToString();
getEmployee.Address = model.Address.ToString();
storeDB.Employees.Add(model);
storeDB.SaveChanges();
return RedirectToAction("Index");
}
但这是在我的模型类中。我如何链接?
答案 0 :(得分:1)
您必须将Action
作为HttpPost
,然后发布表单内容,根据表单数据构建对象,然后保存它们。
答案 1 :(得分:1)
使用模型或FormCollection
参数在Action方法上使用HttpPost如果您只传递填充了值的模型,则模型参数会更好。
[HttpPost]
public ActionResult UpdateItem (Employee model){
// save model here
return RedirectToAction("Index", "Home"); //something like this
}
最好为Employee使用单独的ViewModel。
答案 2 :(得分:1)
在您的操作中使用HttpPost属性。视图中的所有输入字段必须位于表单内,否则数据将不会发送到操作。完成设置后,您可以使用视图中使用的相同模型将员工的数据发送到您的操作中。例如:
[HttpPost]
public ActionResult UpdateItem (Employee model)
{
....
getEmployee.Name = model.EmployeeName.ToString();
getEmployee.Address = model.EmployeeAddress.ToString();
...
}
如果只发送Id,则必须循环FormCollection并将“getEmployee”实体的属性设置为您在FormCollection中接收的值。
像这样:
getEmployee.Name = FormCollection["EmployeeName"].ToString();
getEmployee.Address = FormCollection["EmployeeAddress"].ToString();
...
等等。显然,Name和Address是Employees对象属性的名称。
您使用的是EntityFramework吗?如果是这样,只需调用“storeDB”的SaveChanges()方法即可。如果没有,您必须调用您正在使用的数据访问的保存方法。希望它有所帮助。