对模型对象的更改未传回控制器

时间:2016-01-01 23:08:19

标签: c# asp.net-mvc data-binding

我正在加载模型以查看并显示它。然后我对其中一个字段进行更改并将其发回。根据断点,我正在使用正确的动作方法,但传入的模型不包含任何变化。

我怀疑我在视图中有未绑定的控件。我两次都尝试了同样的问题。

@Html.TextBoxFor(bike => bike.Color)
<input type="text" value="@Model.Color" />

我没有正确绑定它吗?我该怎么做?

使用断点命中的控制器如下所示。请注意,传入的自行车根据智能感知不包含任何变化。如果我在VS中手动进行更改,它们将存储到数据库中。

public ActionResult BikeStore(Bike bike)
{
  ...
  return RedirectToAction("Bikes");
}

模型是Code First生成的。

public partial class Bike
{
  [Key]
  public Guid Id{get; set;}

  [Required]
  [StringLength(999)]
  public string Color { get; set; }
}

使用此功能完成提交。

@Html.ActionLink("Submit", "BikeStore", "Home", @Model, null)

但是,如果我执行以下操作,它可以正常工作 - 添加到控制器中。但不是页面上任何控件的实际内容。所以我非常肯定那些没有约束,我无法弄清楚为什么或如何制作它们。

@Html.ActionLink("Submit", "BikeStore", "Home", new Bike
{
  Id = Model.Id,
  Color = Model.Color + "!"
}, null)

1 个答案:

答案 0 :(得分:1)

提交操作错误。您正在传递@Model,但这将是渲染视图时的模型。您应该使用带有提交按钮的表单。这会将用户编辑的值绑定到帖子上的模型。

@using (Html.BeginForm("BikeStore", "Home", FormMethod.Post)
{
    // your inputs
    // ...
    <input type="submit" value="Submit">
}