将数据从View返回到Controller

时间:2015-02-08 06:47:00

标签: asp.net-mvc asp.net-mvc-4

用户在我的视图中编辑数据后,如何将数据恢复到我的控制器,以便我可以更新我的数据库?

控制器

public ActionResult Cv(int Id)
    {
        Cv CvBlog = new Cv();
        CvPerson = db.Cv.Find(Id);

        return View(CvBlog);
    }

查看示例

在这种情况下,我想返回Name

的新值
<input type="text" class="form-control" value="@Model.Name" id="name" placeholder="Name">

非常感谢

3 个答案:

答案 0 :(得分:0)

而不是value属性在视图中使用name属性,如下所示。 <input type="text" class="form-control" id="name" name="@Model.Name">

获取控制器使用中的值string name=Request["Name"]请求[&#34;名称&#34;]将具有用户输入的值

答案 1 :(得分:0)

一个选项是将HTML输入的id添加到返回函数的参数列表中,如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Cv(int id, string name)
{
  //TODO: update Cv by whatever means you determine
  return View("Index");
}

更好的选择是创建一个可以捕获值的ViewModel(仍然基于HTML输入的id)。这样你也可以对它们进行一些简单的字段/属性级别检查。

查看型号:

public class CvEditViewModel
{
  public int Id { get; set; }

  [Required]
  [MaxLength(50)]
  public string Name { get; set; }
}

控制器:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Cv(CvEditViewModel model)
{
  if (ModelState.IsValid == true)
  {
    //TODO: update Cv by whatever means you determine
    return View("Index");
  }
  return View(model);
}

答案 2 :(得分:0)

在视图中设置名称属性

<input type="text" class="form-control" value="@Model.Name" name="name" id="name" placeholder="Name">
控制器中的

[HttpPost]
public ActionResult Cv(int id, string name)
{
  //TODO: update Cv by whatever means you determine
  return View("Index");
}