2013-03-04 1 views
0

Я использую привязку форм форм ASP.NET, которая была добавлена ​​в .NET 4.5. Я вижу, что есть много вещей, связанных с привязкой к модели, которая должна облегчить задачу и уменьшить количество кода, который вам нужно написать. Однако я хочу знать, есть ли способ вручную обновлять элементы.ASP.NET 4.5 привязка к моделям настраивать обновление

Я нашел способ 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(); 
} 

Есть ли способ, что я могу сделать больше по эксплуатации вроде обновления вроде этого?


Вот пример сценария. Допустим, у меня есть текстовое поле в строке, где пользователь вводит идентификатор пользователя, но в обновлении я хочу фактически установить свой номер значка. В моей функции обновления я сначала хочу сделать запрос, чтобы получить номер значка для данного идентификатора пользователя, а затем установить это свойство в моем объекте перед сохранением контекста.

+1

Во втором примере вам вообще не нужна привязка к модели. – Nenad

+0

Возможно, это станет проще, если вы представите пример того, чего вы пытаетесь достичь. Почему вы хотите обновить вручную? – magnattic

+0

Ваш второй пример будет работать. TryUpdateModel будет использовать вашу модель 'equip' и поставщиков значений по умолчанию (Form, Querystring и т. Д.) И попытаться установить значения, сопоставляя имена на вашей модели. – Joe

ответ

0

Если вы хотите отслеживать изменения в текстовом поле вручную, вам необходимо прослушать Textbox.TextChanged event.

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

Здесь вы можете сделать все, что хотите, в текстовом поле, в вашем случае сохраните его как соответствующее описание оборудования.

1

Что вы пытаетесь сделать, это подключиться к процессу привязки модели и изменить значения до их сохранения. Я не уверен, что если модель связывания в WebForms является 1: 1 так же, как в MVC, но вы можете попробовать эту статью:

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

В статье проверки, но вы можете так же легко изменить там.

В основном, вы регистрируете пользовательский ModelBinder для своего класса, который затем подключается к вызову для привязки модели.