ASP.NET 4.5模型绑定自定义更新

时间:2013-03-04 17:56:20

标签: c# asp.net .net model-binding asp.net-4.5

我正在使用.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的徽章编号,然后在保存上下文之前在我的实体中设置此属性。

2 个答案:

答案 0 :(得分:1)

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

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

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

基本上你要做的是为你的类注册一个自定义的ModelBinder,然后挂钩到绑定模型的调用。

答案 1 :(得分:0)

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

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

您可以根据需要使用文本框值,在您的情况下将其存储为相应的设备描述。