2011-10-27 12 views
2

報告書を含むウェブアプリを作成中です。このフォームには、ユーザーがリターンデータを指定できるようにするラジオボタンが多数含まれています。 約6種類のリターンデータ '形式'があり、それぞれに2種類のバリエーションがあります.htmlデータまたはチャートにレンダリングするためのJSONデータです。ASP.NET MVC - さまざまな方法で対応できるフォームアクションを最適に構築する方法

私はそれをコーディングし始めましたが、私のフォームのポストアクションメソッドは間違っています。 私は基本的に要求されたデータ形式をチェックし、必要に応じてそれを返します。各戻り値の型は、独自の部分的なview/jsonオブジェクトを必要とするので、コードを再利用する余地はほとんどありません。

それぞれ独自のアクションメソッドが必要なように感じます。ラジオボタンの選択に基づいて異なる場所にフォームを投稿することも間違っています。

レポートタイプをオンにして、コントローラの適切なアクションにリダイレクトすると、それほど正しくないように感じられます。

私は間違った方法でこれに近づいていますか?現在のところ、私のコントローラーアクションには多くのコードと多くのロジックが含まれています...

私の質問は理に適っています。

ありがとうございました

+0

クライアント側のjavascriptで投稿を処理できません。実際には、ユーザーが選択したレポートに応じて別のアクションが呼び出されますか? jQueryはそれを助けることができます。 – Pieter

+0

できます。しかし、私はJSをできるだけ愚かなものにしておきたい。それはちょうど私の好みだ:-)私は私が各ラジオボタンのセレクションでフォームのアクションを変更した場合に働くかどうかを見ることができる – Sergio

答えて

2

私はあなたのアプローチに間違いはないと思います。あなたはできる再利用最大化するために:

  • ビジネス/データ層のコードはどこでも同じであることを確認してくださいあなたの意見内の再利用可能なテンプレートが含まれます(可能な場合)

私はあなたが必要とする意見にを想定します実際にを返すのは、オプションの組み合わせごとに異なるです。どのようなアプローチでも、あなたはそれに固執しています。

私はクライアント側のアプローチを選択しません。サーバーとクライアントの両方にコードがあり、変更するたびに更新する必要があります。私は一連のオプションを受け取り、それらを1つの場所でどうするかを決定するコードを保持します。

+0

フィードバックに感謝します。私は、それが維持する雑用になるので、私は親切にクライアントサイドを手に入れないことに同意します。私は今、他人に委任された1つのアクションメソッドが行く方法だと思っています...これを行うための実際の方法はありませんが、私は思っているすてきな方法です... :) – Sergio

1

私は、それぞれのフォーマットが別々のアクションでなければならないと感じていることを知っていますが、ハイブリッドなアプローチが気分を良くするでしょう。

各ラジオボタンの値を関連するアクションの名前に設定すると、メインのPOSTアクションで、1行のコードで適切なアクションを呼び出すためのパラメーターを使用できます。あなたはJavascriptで何かをばかばらしくする必要はなく、簡単に拡張できますし、あなたは別々の行動を取ることができます。

+0

ちょっと私はちょっとこれについて考えたスイッチをメインフォームのアクションメソッドにしてから、適切なアクションメソッドにリダイレクトすることができますか? – Sergio

0

あなたの問題を正しく理解していれば、多くのスイッチコードが動作しています。

ファクトリパターンを使用できると思います。 switchパラメータをパラメータとして受け入れ、ActionResultインスタンスを返すファクトリを作成できます。

関連する問題