2009-04-03 10 views
0

私はO/Rマッパーを使用します。これは、DBからオブジェクトを一般的な方法でリロードできます。私は、の直後に、マップされたオブジェクトを再ロードするために、の後にリクエストをインターセプトできるようにしたいと考えています。MVCコントローラのアクションメソッドを傍受する

ActionFiltersはもちろんですが、ActionFilters(または私が見てきた例)は、オブジェクトが作成された後ではなく、フォームが提供するデータを処理できるという問題があります。

私はコントローラーのオーバーライド可能な方法を見ていましたが、私の目を引いたことは何も明白ではありませんでした。誰かがこれを行う方法を知っていますか?

ありがとうございます。

ナセル

答えて

0

あなたが必要とするのはカスタムモデルバインダーです。デフォルトのModelBinderクラスを継承し、必要なロジックを提供することができます。例えば

、あなたはこの持っている場合:

public ActionResult Save([Bind(typeof(CustomModelBinder))] Customer customer) 
{ 
    /* ... */ 
} 

をモデルバインダーは、あなたのためのオブジェクトを作成しますが、(既存のレコードのための)最初のデータベースからそれを取得するために選択することができます。

+0

親愛なるベン! 返信いただきありがとうございます!私は使用しているO/Rマッパーに付属しているモデルバインダーにコードを見つけましたので、今はモデルバインダー内のリロードを試してみる必要があります。 返信いただきありがとうございます! ナセル – Nasser

0

このようなことが必要な場合は、

public class Navigate : ActionFilterAttribute, IActionFilter 
{ 
    void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     ViewResult view = filterContext.Result as ViewResult; 

    } 
} 

現在のコントローラに属しているview.ViewData.Modelが表示され、このマップされたデータですべてを行うことができます。 私が正しいかどうか教えてください:)

+0

親愛なるOmoto! ご返信ありがとうございます。 アクションの結果の取引にお答えします。実際には、アクションが実行される前にマップされたオブジェクトを取得することに興味があります。 グリーティング ナセル – Nasser

関連する問題