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 を入力する行にテキスト ボックスがあるとしますが、更新時に実際にバッジ番号を設定したいとします。私の update 関数では、まず特定のユーザー 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 の変更を手動で追跡したい場合は、Textbox.TextChangedイベントをリッスンする必要があります。

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

そこでは、必要に応じてテキストボックスの値を使用できます。あなたの場合は、それに応じた機器の説明として保存します。

于 2013-03-04T18:10:49.607 に答える