私はWebフォームからMVCに移行しています(私は知っています、3年遅れています)、私は大部分を取得しますが、アドバイスが必要なことがいくつかありますそして明確化:ASP.NET MVC - 複雑なビューロジック
最初に、入力をビューに動的に追加する場合はどうなりますか?たとえば、古いWebフォームで請求書を作成する際に、サーバーサイドのクリックイベントハンドラを含むボタンがあり、追加の5つの請求書明細の行が追加されました。 Webフォームのステートフルな性質は、サーバーが残りのページを変更することなくPOSTイベントを「安全に」処理したことを意味していました。
MVCでは、クライアント側のスクリプト(showstopperではなく、スクリプトを有効にしていないクライアントをサポートしたいと思います)を使用せずにこれをどうやって行うのかとは思いません。
第2の問題は、請求書の例に関連しています。私のモデルにリストがある場合は、その入力をどのように生成する必要がありますか?
私はデータバインディングが可能な解決策であることを知っていますが、私は降伏制御のようなものです。
最後に、「ステートフルページ」のコンセプトに戻って、カレンダーを持つダッシュボードページがあるとします(独自のカレンダーコントロールクラスを作成しました。コントロール自体はステートレスですが、webform viewstateページング情報を保存する方法) - カレンダー月間にユーザーページをどのようにすることができますか?明らかにPOSTは不適切なので、クエリ文字列パラメータでGETする必要があります。これをMVCでどうやって行うことができますか? (AJAXは言わないでください)。
ありがとうございます!
おかげで、私はいくつかの質問を持っている:ユーザーがフォームにデータを入力した場合、その後、その後、彼らは入力した内容失うことになるより多くの行を追加することを決定、クライアントスクリプトを使用するが唯一の解決策はありますか?また、私のコントローラがそれを読むことができるように、POST中に新しく追加された行のコンテンツが私のモデルオブジェクトにどのように追加されますか? – Dai
@David - 基本的な設計上の決定があります。私はおそらく、ユーザーがJSを有効にしていると仮定して、私が記述した方法で行う単純な解決策に行きます。 JSを有効にしていないユーザーは経験が低下しますが、JSをオンにするだけで体験を増やすことができます。それ以外の場合は、POSTアクションを「Add 5 Rows」* Submitボタン*に応答するより複雑なソリューションにします。クリックすると名前が付けられ、検出可能なパラメータとしてポストバックされ、ビューを再生成しますデータと余分な行。 – tvanfosson