对模型对象的更改没有传递回控制器
本文关键字:控制器 模型 对象 | 更新日期: 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">
}