Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更新表单元素_C#_Asp.net Mvc_Asp.net Mvc 3_Model View Controller - Fatal编程技术网

C# 更新表单元素

C# 更新表单元素,c#,asp.net-mvc,asp.net-mvc-3,model-view-controller,C#,Asp.net Mvc,Asp.net Mvc 3,Model View Controller,我的详细信息视图中有以下内容: 此详细信息来自上一页。现在我想将更改的元素保存回DB。我该怎么做?我在我的家庭控制器类上有: [HttpPost] public ActionResult UpdateItem (Employee model) { var getEmployee = storeDB.Employees.SingleOrDefault( c=>c.Id == model.Id); getEmployee.Name = mo

我的详细信息视图中有以下内容:

此详细信息来自上一页。现在我想将更改的元素保存回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");
    }

但这是在我的模型课上。我如何连接

您必须将
操作
作为
HttpPost
发布表单内容,根据表单数据构建对象,然后保存它们

您必须将
操作
作为
HttpPost
发布表单内容,根据表单数据构建对象,然后保存它们

在带有参数model或FormCollection的Action方法上使用HttpPost

如果只传递填充了值的模型,则模型参数会更好

[HttpPost]
public ActionResult UpdateItem (Employee model){
//   save model here

return RedirectToAction("Index", "Home"); //something like this
}

最好为员工使用单独的ViewModel

在带有参数model或FormCollection的Action方法上使用HttpPost

如果只传递填充了值的模型,则模型参数会更好

[HttpPost]
public ActionResult UpdateItem (Employee model){
//   save model here

return RedirectToAction("Index", "Home"); //something like this
}

最好为员工使用单独的ViewModel

在操作中使用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()方法。如果没有,则必须调用正在使用的数据访问的save方法。希望有帮助。

在操作中使用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()方法。如果没有,则必须调用正在使用的数据访问的save方法。希望有帮助。

storeDB.Employees.Add(model);SaveChanges();storeDB.Employees.Add(模型);SaveChanges();编辑后,我不知道id是否存在,因为我们没有将id作为参数传递。那么我需要删除第一行吗?这是为了更新,所以假设您的模型有Id,您可能需要这样的第一行(c=>c.Id==model.Id)。谢谢Bipins。我更新了我的问题并添加了Id。我应该如何将此UpdateItem函数链接到“保存”按钮?您可以将此强类型模型和脚手架模板创建为“创建”,但您的视图似乎已经创建,它将创建必要的元素。基本上,输入元素应该由这个模型创建,并且应该使用http post将它发布到同一个操作。编辑之后,id将不存在,因为我们没有将id作为参数传递。那么我需要删除第一行吗?这是为了更新,所以假设您的模型有Id,您可能需要这样的第一行(c=>c.Id==model.Id)。谢谢Bipins。我更新了我的问题并添加了Id。我应该如何将此UpdateItem函数链接到“保存”按钮?您可以将此强类型模型和脚手架模板创建为“创建”,但您的视图似乎已经创建,它将创建必要的元素。基本上,输入元素应该由这个模型创建,并且应该使用HTTPPOST将其发布到同一个操作。谢谢Gabo。我编辑了我的问题,看一看。对我正在使用EF 4.1您是否正在更新或添加新条目?我知道您想要更新一行,所以“storeDB.Employees.Add(model);”不是必需的。如果这样做,可能会得到重复的行或异常,告诉您引用完整性不允许插入重复的行。仅当您要添加新行时才使用“storeDB.Employees.Add(model);”。是的,您是正确的。我想删除它,而不是向其中添加另一个重复行。然后从代码中删除“storeDB.Employees.add(model);”。还有一件事,在直接处理实体时使用storeDB.Employees.FirstOrDefault()。它应该会起作用。祝你好运对于带有HttpPost属性的操作,您的保存按钮应该是“提交”类型的“输入”。这将使您显式地发布到操作,在本例中为UpdateItem。在视图中使用助手,它应该为您提供设置按钮需要执行的操作的选项。干杯,谢谢加博。我编辑了我的问题,看一看。对我正在使用EF 4.1您是否正在更新或添加新条目?我知道您想要更新一行,所以“storeDB.Employees.Add(model);”不是必需的。如果这样做,可能会得到重复的行或异常,告诉您引用完整性不允许插入重复的行。仅当您要添加新行时才使用“storeDB.Employees.Add(model);”。是的,您是正确的。我想删除它,而不是向其中添加另一个重复行。然后从代码中删除“storeDB.Employees.add(model);”。还有一件事,在直接处理实体时使用storeDB.Employees.FirstOrDefault()。它应该会起作用。祝你好运对于带有HttpPost属性的操作,您的保存按钮应该是“提交”类型的“输入”。这将使您显式地发布到操作,在本例中为UpdateItem。在你的视图中使用一个助手,它会给你选择的权利