から呼び出されるアクションの上書き、私はこれを呼び出す:私の見解の終わりにChildActionExtensions
<%= Html.Action("ProductLayoutAndLimits", this.Model) /* Render product-specific options*/ %>
アクションは私のコントローラで仮想であること:
[ChildActionOnly]
public virtual ActionResult ProductLayoutAndLimits(DeliveryOptionsViewModel optionsViewModel)
{
return new EmptyResult();
}
意図は、私はこれをオーバーライドするというものでしたメソッドを特定のコントローラに適用します。当然、私はこれをしました:
public override System.Web.Mvc.ActionResult ProductLayoutAndLimits(DeliveryOptionsViewModel optionsViewModel)
{
しかし、ブレークポイントはヒットしないので、私のオーバーライドは選択されません。私は使用すべき異なる過負荷がありますか?あるいは別のオブジェクトを渡す必要がありますか?それとも、製品特有のアクションに必要なアノテーションが検出されていますか?
何か助けていただければ幸いです。ありがとう!
編集
すべての提案が高く評価されていますが、私は実際にはかなり異なった手法を示唆よりも、私の質問に答えるソリューションの中で最も興味を持っています。
テンプレートが提案されましたが、新しい追加のビューコードがレンダリングされる前にコントローラコードが実行される必要があることに注意してください。ベースコントローラは、他の製品のプラットフォームとして機能するソリューションに含まれています。彼らは製品特有のことをすることはできません。彼らが彼らの見解を描写した後、私の子供の行動のオーバーライドが呼び出されるという意図があります。私のコントローラコードは、ビューをレンダリングする前にモデルのプロパティを設定する方法を決定するために、いくつかのものをチェックします。
編集
私は問題を発見しました。私はいつものように馬鹿だと感じる。プラットフォームのビューコードからHtml.Action
が呼び出されました。私たちは7月以来、このために製品固有のビューを使用していることが判明しました。私たちは通常、製品固有の見解を使用していないため気づいていませんでした。うわー!
ベースコントローラーのProductLayoutAndLimitsメソッドでブレークポイントを設定しましたが、そのブレークポイントにヒットしましたか?もしそうなら、おそらくHtml.Actionに間違ったコントローラを使用するように伝えているでしょう。要求がBase :: SomeActionから発生した場合、Html.Action( "SomeOtherAction")を呼び出すとBase :: SomeOtherActionが検索されます。 Derived :: SomeOtherActionを探すために、Html.Actionにパラメータとして "Derived"を渡す必要があります。 – Levi
私の編集を参照してください。その呼び出しは作成されていませんでした。少年は私が馬鹿だと感じますか? – Samo
@Levi:私の問題は実際に私が見落としたものでしたが、あなたの答えは確かに正しいです。私の製品のアクションがヒットする唯一の方法は、私の製品のコントローラがビューをレンダリングするコントローラであるかどうかです。私はそれを受け入れることができるように答えとして投稿してもらえますか?ありがとう! – Samo