0

次のようなオブジェクト関係があります。

払い戻しにはバウチャーのリストが含まれています

バウチャーには項目のリストが含まれています

ユーザーがバウチャーや項目の入力など、払い戻しのすべての詳細を入力できる単一の MVC ページを作成したいと考えています。したがって、現在の払い戻しに追加するための追加ボタンを備えたバウチャー用のフォームと、現在のバウチャーに追加するためのボタンを備えたラインアイテム用のフォームがあります。

最初に、払い戻しを処理する払い戻しコントローラーの作成に着手しました。そのビューには、バウチャー データを入力するための部分的なビューが含まれます。このビューはバウチャー コントローラーによって処理され、バウチャー コントローラーは各バウチャーに関する情報を収集します。

伝票コントローラーのビューには、項目を入力するための部分的なビューがあります。これは、品目コントローラによって処理されます。

今、私は MVC にまったく慣れていないので、頭が完全に理解できていないかもしれませんが、これが正しい方法ではないのではないかと少し心配しています。たとえば、ユーザーがすべての項目の詳細を入力して Ajax フォームに送信する場合、これを処理するのは項目コントローラーであると想定しました。ただし、これを行うと、私の払い戻しオブジェクトはこれを認識しません。最終的な目標は、払い戻しコントローラーに払い戻しオブジェクトを設定することです。

あるコントローラーから別のコントローラーにデータを渡すか、あるコントローラーから別のビューからアクションを呼び出すか、追加ボタンをバウチャー コントローラーまたは払い戻しコントローラーに配置する必要がありますか? どんなポインタでも大歓迎です

4

1 に答える 1

2

任意のビュー内から、任意のコントローラーからアクションを呼び出すことができます。例として、Razor ActionLink ヘルパーを使用すると、そのコントローラーからメソッド名と共にコントローラー名を渡すことができます。

@Html.ActionLink("Link text, "Action Name", "Controller Name")

そして、ビューをレンダリングしたコントローラーとは異なるコントローラーに投稿するフォーム:

@Html.BeginForm("Action Name", "Controller Name", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    // Form fields
}

これを行うかどうかは、アプリケーションの全体的な設計によって異なります。ViewModelRefund と Voucher から必要なデータをカプセル化する "RefundVoucher" を作成し、Modelsそのためのコントローラーと厳密に型指定されたビューを作成する方が簡単な場合があります。

于 2013-07-29T15:52:40.197 に答える