对模型对象的更改没有传递回控制器

本文关键字:控制器 模型 对象 | 更新日期: 2023-09-27 18:28:44

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

我怀疑我已经解除了视图中的控件的绑定。下面两个我都试过了,两次都是同一个问题。

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

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

被断点击中的控制器看起来是这样的。请注意,根据intellisense,传入的自行车不包含任何更改。如果我在VS中手动进行更改,它们将存储到DB中。

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

该模型是"代码优先"生成的。

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)

对模型对象的更改没有传递回控制器

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

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