1

我正在使用 .NET 4.5 中添加的 ASP.NET 表单模型绑定。我看到有很多关于模型绑定的东西应该使它更容易并减少你需要编写的代码量。但是,我想知道是否有办法手动更新项目。

我发现 TryUpdateModel 方法是这样的:

public void UpdateEquipment(int Id)
{
    var equip = EquipCondContext.Equipments.Single(x => x.Id == Id);
    TryUpdateModel(equip);
}

但是,我希望有能力做到这一点:

public void UpdateEquipment(int Id)
{
    var equip = EquipCondContext.Equipments.Single(x => x.Id == Id);
    //equip.Description = A TextBox.Text on that row that I just saved in my list.
    EquipCondContext.SaveChanges();
}

有没有办法可以像这样进行更手动的更新?


这是一个示例场景。假设我在用户输入用户 ID 的行上有一个文本框,但在更新时我想实际设置他们的徽章编号。在我的更新函数中,我首先要进行查询以获取给定用户 ID 的徽章编号,然后在保存上下文之前在我的实体中设置此属性。

4

2 回答 2

1

您正在尝试做的是挂钩模型绑定过程并在保存之前更改值。我不确定 Webforms 中的模型绑定是否与 MVC 中的 1:1 相同,但你可以试试这篇文章:

http://www.markeverard.com/2011/07/18/creating-a-custom-modelbinder-allowing-validation-of-injected-composite-models/

这篇文章是关于验证的,但您也可以轻松地更改那里的值。

基本上,您所做的是为您的类注册一个自定义 ModelBinder,然后将其挂接到绑定模型的调用中。

于 2013-03-04T18:42:41.020 回答
0

如果您想手动跟踪文本框中的更改,您必须收听Textbox.TextChanged事件

<asp:Textbox ... OnTextChanged="MyTextBoxOnTextChanged" />

在那里,您可以随心所欲地使用文本框值,在您的情况下将其存储为相应的设备描述。

于 2013-03-04T18:10:49.607 回答