問題タブ [onactionexecuted]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
115 参照

asp.net-mvc-2 - BaseController にコンテンツ アクセス ロジックを配置することは良い考えですか?

私は ASP.NET MVC アプリケーションを開発しています。このアプリケーションでは、任意のページのコンテンツをデータベースから取得して (存在する場合)、ページに表示できます。

これは、非技術者がソース コード (ビューなど) にアクセスして変更することなくコンテンツを編集できるようにするためです。

私がこれを行っている方法は、各コントローラーがベースコントローラーから派生することです。ベース コントローラーは 'OnActionExecuted' をオーバーロードし、この機会を利用して、現在のアクション/コントローラーに割り当てられているコンテンツを取得します。

アクションが「ContentViewModel」から派生した ViewModel を返す場合、ViewModel の「Text」プロパティにデータベースからのテキストを設定します。

そして、テキストはビューによってレンダリングされます。

このデザインの弱点が見えますか?

基本コントローラーを使用するよりも、ビューから呼び出すコンテンツをプルするための HtmlHelper 拡張機能を使用した方がよいでしょうか?

私がこれを尋ねている理由の 1 つは、独自のベース コントローラーを使用すると、指定されたコントローラーが「System.Web.Mvc.Controller」から直接継承されることを期待しているように見える「Html.RenderAction」の呼び出しに干渉するように見えることです。

0 投票する
0 に答える
1075 参照

asp.net-mvc - トランザクション フィルター 例外処理 ASP.NET MVC

プロジェクトで S#arp アーキテクチャを使用しています。これには、コントローラー メソッドの [Transaction] 属性が付属しています。これにより、Transaction Commit は OnActionExecuted フィルターとして呼び出されます。つまり、Controller メソッドのスコープを終了した後に発生します。これに関する私の問題は、コミット中に例外が発生した場合に何が起こるかです?

S#arp ソース コードから、TransactionAttribute.cs で次のコードを確認できます。

たとえば、ユーザーが外部キー制約がある (そして間違ったデータがある) 保存をコミットしようとすると、コミットは処理されないデータベース例外を生成します。ユーザーを一般的なエラー ページ ([HandleError] コンストラクト) にダンプする代わりに、問題を修正できるように、ユーザーを元の場所に戻すことをお勧めします。Controller メソッドのスコープ内で明示的にトランザクションを実行すれば、これを行うことができます。ポストフィルターとしては範囲外なのでできません。

この状況で他の人がどうするか見てみたい。

0 投票する
1 に答える
1685 参照

asp.net-mvc - OnActionExecuted のオーバーライドと奇妙な IIS 応答の取得

そう、

IIS 6 (wildcard application maps/aspnet_isapi.dll ハック) に MVC 2 サイトがあり、好みの場所 (la.acme.com と nyc.acme.com など) に応じて異なる URL にユーザーを誘導したいと考えています。

誰にも www.acme.com や acme.com にたどり着いてほしくありません。

これを達成するために、私は次のことを行っています(これが最善の方法ではないことを認めます。そのため、この質問をしています):

私のベースコントローラーでは、次のことを行っています。

OnActionExecuted上記の長いコードの要約は次のとおりです。

  1. ユーザーが www.acme.com または acme.com (PrivacyPolicy など) を許可する「アクション」を実行している場合は、それ以上先に進む必要はありません。

  2. URL に「www」が含まれている場合、または都市のプレフィックスが含まれていない場合は、状況を修正する必要があるため、先に進みましょう。

  3. 希望する都市を指定する Cookie (StoreLocationID) がある場合は、/Home/ChooseCity にリダイレクトし、そこで他の Cookie を設定して正しい URL (nyc.acme.com または la.acme.com) にリダイレクトします。

  4. ユーザーがサインインしており、ユーザー アカウントに希望の都市がリストされている場合は、それを使用します (/Home/ChooseCity にリダイレクト -- 上記 3 と同じ)

  5. Cookie もユーザー アカウントにも保存されていないため、IP を使用して zip を取得し、zip がカバーする都市内またはその周辺にあるかどうかを確認します。そうである場合は、上記の 3 と 4 のように /Home/ChooseCity に送信します

  6. 最後に、どの都市を希望するか判断できない場合は、/Home/ChooseLocation/ で手動で選択してもらいます。

これはすべて機能します。しかし、ランダムな時間に次のことに気付き始めています...

場合によっては (パターンがないように見えますが)、ユーザーがリンクをクリックして、完全にランダムなページ (クリックしたリンクのリンク先ではない) にたどり着くことがあります。彼らがたどり着く場所は、通常、別のユーザー (離れた都市) が要求していた可能性がある場所のようです (あなたが量子エンタングルメントを考えていることは知っていますが、私はそれを除外しました)。誰が何を要求したのか、IIS が混乱しているようです。

私の質問 (結局) は、上記 (のOnActionExecuted) の私のロジックが IIS のトリップアップを引き起こしている可能性はありますか? 「ランダムな場所」の問題は、URL に nyc または la を含むユーザー、つまり適切な storelocation cookie を持つユーザーでも発生することに注意してください。これは、URL と Cookie が適切に構成されているため、ユーザーが「/Home/ChooseCity」または「/Home/ChooseLocation」にリダイレクトされないことを意味します。

0 投票する
2 に答える
3230 参照

asp.net-mvc-3 - MVC モデルは OnExecuted アクション フィルターで null です ... またはモデルを設定するよりエレガントな方法ですか?

OnActionExecuted メソッドをオーバーライドした ActionFilter があります。filterContext.Controller.ViewData.Model は、POST 操作では常に null です。null であってはならないと言っているように見える次の記事を見つけましたが、これは以前のバージョンの MVC であったに違いありません。これがMVC3です。私は何を得るべきですか?

ActionFilter 内のモデルの可用性

アップデート:

元の質問に対する答えを見つけました。カスタム日付フォーマッタで JSON を出力するカスタム ActionResult がありました。問題は、モデルがコントローラーに設定されていないことでした。

私のカスタム ActionResult では、ExecuteResult メソッドに ControllerContext が渡されます。ここで Model を設定できると便利です。

しかし、これはサイクルの後半であり、結果はActionFilterでまだnullです。これは、コントローラーにモデルを手動で設定する必要があることを意味しているようです。

または

つまり、このカスタム ActionResult を使用するたびに、これを行うことを忘れないでください。もっとエレガントな方法はありますか?

さらに別の更新:

これを行う方法を見つけましたが、思ったほどエレガントではありません。

コントローラーで送信するcomstom ActionResultのコンストラクターでは、少なくとも常に一貫性が保たれます。

0 投票する
1 に答える
1035 参照

c# - OnActionExecutedの実行をスキップする

OnActionExecutedメソッドが実装されたActionFilterAttributeを作成しました。つまり、Actionメソッドの後に実行されます。ただし、特定の条件では、OnActionExecutedを実行しないようにします。

Actionメソッドから、ActionFilterが実行されないようにするにはどうすればよいですか?

今のところ、私はこれを作りました:

アクションメソッドについて:

そして、ActionFilter.OnActionExecuted()で:

しかし、それはもっとエレガントなアプローチが存在するかもしれないと思います。

0 投票する
4 に答える
8847 参照

asp.net-mvc - Web API で OnActionExecuted が 2 回呼び出される

コントローラーが OnActionExecuted でアクションを実行した後、いくつかのことをしようとしています。ただし、メソッドは 2 回呼び出されます。

私のフィルター方法

そして私のコントローラー

このフィルターを試すと、onActionExecuted メソッドが 2 回呼び出され、メソッド内のアクションが応答に 2 回適用されます。理由を検索しましたが、解決策が見つかりません。

何か案は?

0 投票する
0 に答える
32 参照

java - Prime Faces 5.2 結果/アクションは、jsf ページがロードされたときに実行されました

これは私の最初の PrimeFaces プロジェクトで、Primefaces 5.2 を使用しています。リストページのroleList.xhtmlに次のようなフォーム/アクションを入れました:

私のバックビーンメソッドは次のとおりです。

前のコードが示すように、xhtml は、バッキング Bean の createRole() メソッドを呼び出してロールを作成し、roleEdit.xhtml に移動するために押すボタンを生成します。しかし、残念ながら、roleList.xhtml にアクセスしたり更新したりするたびに. バッキング Bean メソッドが呼び出されて新しいロール オブジェクトが作成されました。つまり、ボタンを押してバッキング Bean アクションを起動することなくフォーム/アクションが実行されましたが、UI はまだ roleList.xhtml に残っています。

PrimeFaces の開発経験が豊富な人はいますか?私が間違っている点を指摘してください。

編集: このページは template.xhtml も読み込みます。リンク/結果を使用して他のページで他のバッキング メソッドを呼び出すと、再び発生します。

私の質問は次のとおりです:ページの読み込み時にリンク/ボタンが自動起動されないようにするにはどうすればよいですか??

新規追加 私のアプリケーション サーバーは Weblogic 12cR2 です。同様の質問に対するBalusCの回答をすでに見ました。私の場合はうまくいきません。理由はわかりません。ページがロードされたときにリンケージ/ボタンが実行された理由と、それが何度も繰り返されるのを防ぐ方法をもう少し説明してください。