私はContentPartを使って作成したシンプルなウィジェットを持っています。 ContentPartには適切なドライバがあり、ウィジェットはオーチャードのどこにでも置くことができ、すべてがうまくいきます!ウィジェットは、ユーザーから何らかのデータをキャプチャし、検証し、処理し、ウィジェットに成功応答を表示する必要があります。オーチャードCMSのウィジェットテンプレートをオーバーライド
これを実現するには、モデルを処理し、同じMyFormビューが無効な場合はそれを返すPOST要求を受け入れるコントローラーを定義し、有効な場合はFormSuccessビューを返します。ウィジェットパートテンプレートでは、@Html.Partial("MyForm")
を使用して、フォームを含むdivをPOST応答で更新するAjaxフォームを含むMyFormビューを表示します。コントローラは、データに応じてMyFormビューまたはFormSuccessビューを返します。
私の問題は、デザイナーがMyFormビューとFormSuccessビューの部分ビューをオーバーライドする必要があることです。Partビューテンプレートを簡単にオーバーライドできますが、部分ビューはオーバーライドできません。
私は@Html.Partial("MyForm")
を使用しているため、現時点ではこれが不可能な理由が考えられます。私は@Display(New.MyForm())
を代わりに使用すると、現在のテーマのViewsフォルダにMyForm.cshtmlというファイルを作成することでMyFormビューを上書きできることを発見しました。これは私が必要とするものですが、どのようにすればよいですか@Display
コントローラーのアクションで?
現時点では、私はreturn this.PartialView("MyForm", model)
またはreturn this.PartialView("FormSuccess")
を実行していますが、元のビューを使用し、オーバーライドしたものは使用しません。私はShapeResultがあることに気がつきましたが、これが正しいことなのかどうか分からず、動的コンストラクタパラメータを生成する方法がわかりません。また、理想的には、MyFormビューに強く型付けされたモデルを用意して、HtmlHelperメソッドLabelFor、TextboxFor、ValidationMessageForを使用できるようにする必要があります。
これまで誰かがこのようなことをしたことがありますか?
おかげで、ジェイソン