0

データ入力モードに応じて変化するデータ入力フォームを実装する方法について、正しいアプローチについて研究しています。状況は次のとおりです。

  1. 従業員のリストと従業員の詳細を表示するセクションがある親子フォームを考えてみましょう。

  2. リストから従業員番号をクリックすると、従業員の詳細が HTML テーブルを使用して画面の右側に表示されます。

  3. 従業員の詳細は、最初に読み取り専用フォームとして表示されます。たとえば、出身国フィールドは、SELECT 要素ではなく「SPAN」として表示されます。

  4. ユーザーが [編集] ボタンをクリックすると、[出身国] フィールドが、選択する国のリストを含む SELECT 要素に変更されます。

jQueryを使用して実装したいのは、ItemTemplate、EditItemTemplate、およびInsertItemTemplateを使用したASP.NET FormViewの動作です。

基本的に、データ入力モードはボタンをクリックすることで切り替えられます。データ入力モードに応じて異なる DOM 要素を含むフィールドに CSS ルールを使用することで、この要件にアプローチしようと考えました。前述したように、モードが読み取り専用の場合は SPAN を表示し、それ以外の場合はドロップダウン要素またはテキストエリアを表示します。jQuery を使用すると、データ入力モードに応じて異なるクラス間で toggle() を実行できました。もちろん、これには同じフィールドに対して 2 つの異なるタイプの要素が必要です。

これは最善のアプローチですか?専門家の意見を楽しみにしています。ありがとうございました。

4

1 に答える 1

0

選択肢は 2 つあります。

  1. 標準の asp.net フォームを使用します。これは十分に文書化されており、通常、説明したように2つのコントロールは含まれていません. サーバー側は、読み取り専用コントロールと編集コントロールの代わりに、同じユーザー コントロールまたはサーバー コントロールを使用して、読み取り専用ではなく編集モードでページをレンダリングします。 この方法は、セキュリティ要件がある場合、またはその他の理由でクライアントにどのアイテムを編集可能にするかを決定させたくない場合によく使用されます。(注意: AJAX を使用してセキュリティを行う方法について不機嫌になる人もいますが、これは真実です。セキュリティとサーバー側の検証または処理が必要な場合は、こちらの方が簡単です)。

  2. jQuery / AJAX (および/または MVC) を使用します。このモデルでは、クライアントがインターフェイスの動作に関するすべてを決定し、Web サービスに情報を送信します。この場合、(説明したように) 表示と非表示を切り替える 2 つのコントロールが存在する可能性があります。通常、これは価値があるよりも多くの作業であり、コントロールが編集可能な場合は有効または無効にすることができます。(もちろん)インターフェース要素のタイプに依存します。

「わかりました。でも、どちらを使用すればよいですか?」と言うかもしれません。

場合によります。

技術の 1 つを知っている場合は、知っている技術を使用する必要があります。

それらを知らない場合は、このような単純なプロジェクトではフォームの方が簡単だと思います。(これには多くの人が異議を唱えますが、これは私の意見です。)

ただし、非常に複雑な UI インタラクションが可能になるため、AJAX を使用した MVC が現在より優れたスタックと見なされています。あなたが説明しているよりも複雑です。また、UI の応答性が向上するため、ユーザー エクスペリエンスも向上します。


アプリケーションでは、データ入力の状態が重要になります。ASP.net で行われているように、'If fvwMyForm.DefaultMode = FormViewMode.ReadOnly' を実行できるようにしたいと思います。

これは意味がありません。フォームを使用していない限り、編集の状態に対応する変数はサーバー上 (または StateBag 内) にはありません。これが必要な場合は、jQuery ではなくフォームを使用して状態を変更する必要があります。この変数を変更するには、サーバー ラウンド トリップが必要です。

于 2012-07-13T11:39:38.717 に答える