1

ユーザのタスク追加ボタンに応答して複数のタスクを動的に入力する必要があります。私はどのくらい多くのタスクがユーザによって作成されるのか分からず、非表示のフィールドで最大数を設定したくないのは、データベースの記憶領域に関して非効率的であるからです。フォームの動的入力の作成

タスクは、メモの子要素と考えることができ、別々の表に格納されます。私はビューに複数のタスクを表示することができましたが、私はフロントエンドの開発には自信がなく、ポストバックを呼び出さずに入力フィールドを追加する方法がわからないので、「中間保存保存」領域に入っています。 。

<html> 
<div class="container"> 
    <!-- @using(Html.BeginForm()) { --> 
    <div> 
    <label asp-for="Note">Note</label> 
    <input id="Note" /> 
    <span asp-validation-for="Note"></span> 
    <label asp-for="Task">Task</label> 
    <input id="Task" /> 
    <span asp-validation-for="Task"></span> 
    </div> 
    <div> 
    <button type="button">Add Task</button> 
    <input type="submit" value="Save" /> 
    </div> 
    <!-- } --> 
</div> 

</html> 

を私はまた、「タスクを追加」ボタンによりタスクの入力を作成することができ、小さなjQueryの機能を作ったが、コントローラ/モデルにそれを接続する際にほとんど成功しています。

この要件に対処するためにJSONを使用することをお勧めしましたが、これをフォームで実装する方法と、コントローラーと最終的にはモデルでこれを読み取る方法がわかりません。

私のソリューションに適しているかどうかは、設計の選択肢があります。

答えて

0

[OK]をここで私は通常、このタイプの問題に使用するアプローチを説明しようとします。

まず、よく理解していれば、フォームの主体に依存する要素を挿入するためにクライアントインタラクションの一部としてフォームが構築されるビューがあります1対多数の関係)。私はこの答えの間にそれらの "サブフォーム"と呼ぶでしょう。

あなたがする必要がある:要素が

Bを置き換える/変更/追加whith

A))は、クライアントとの対話を管理するデータがデータベースに永続化することができるように、サーバーのコントローラに最後のデータを送信します。

このような状況に私のアプローチは、ユーザーが「保存」ボタンを押すと、最終的なデータだけを最後に送信して、クライアント内のすべてのクライアントのやりとりを管理しようとすることです。

明らかに...特定の要件によってはこの解決策が推奨されないことがあるため、これはあらゆる状況で有効ではありません。クライアント部分については

私は標準のビューを介して、通常、私はそこに「dinamyc」データの情報を注入するために、特定のコンテナを置き、通常の方法でフォームのコアを構築します。

[タスクの追加]ボタンで、サブフォームの1つの要素のHTMLを作成してコンテナに追加するリスナーを追加します。通常、このコードには削除ボタンが含まれており、これをDOM全体から削除します。私はまた、それらの相互作用を管理するリスナーを持っています。

Ok ...これで、サブフォームの個々の要素を表すコードの一部を追加したり削除したりできるフォームが作成されました。

サブフォームの要素のリストを表すデータ構造(通常はJSONオブジェクトを使用します)をクライアントコードに含めます。サブフォームの構造を通じて

1)ループこの瞬間にそれが含まれている情報を読んで:

ユーザーは、「保存」ボタンをイベントをキャプチャして、戻ってサーバにデータを送信する前にこの二つのことを行う当たりますクライアントのデータ構造(前に参照したJSONオブジェクト)に格納します。これで、すべてのサブフォーム情報を持つJSONオブジェクトが作成されました。

2)文字列を文字化して、フォーム内で送信される隠しテキストコンポーネントに格納します。あなたの "サブフォーム"フィールドはすべてフォーム外にある可能性があります。送信する必要はなく、情報はJSON構造としての「クラスインスタンス」内のサーバーに戻されます。サーバーで

:あなたのコントローラは、フォームデータを受信すると

、「サブフォーム」を介して送信される全情報、ユーザーを表す文字列を格納するフィールドが存在します。

この情報を入手し、好きなように管理するだけで済みます。たとえば、このタイプの情報をロードし、通常の永続性エンジンを使用してデータベースに送信するようにクラスを設計することができます。

追加された要素だけでなく、最後の編集以降に変更された要素も格納されているので、おそらくデータベースで検索して変更する必要があります。

これはテキストの壁であり、私の考えよりもそのアイデアを理解するのがあまり明確ではないので、あなたが何かを理解していないか、十分にはっきりしないものがあるかどうか尋ねてください。

関連する問題