将数据从视图返回到控制器

Returning data from the View to the Controller

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

控制器

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

        return View(CvBlog);
    }

查看示例

在这种情况下,我想 return Name

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

非常感谢

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

在控制器中获取值使用 string name=Request["Name"] 请求["Name"] 将具有用户输入的值

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

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

更好的选择是创建一个 ViewModel 来捕获值(仍然基于 HTML 输入的 ID)。这样您还可以对它们进行一些简单的 field/property 级别检查。

查看模型:

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);
}

在视图中刚刚设置名称属性

<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");
}