2

簡単に言えば、ユーザーにJSのいくつかのタグを選択させて、コントローラに送信するようにしたいと思います。ここに私の提案は以下のとおりです。JavaScriptメソッドをコントローラメソッドに動的に追加しました。Stackoverflow

  • は次のように命名規則を持つすべての挿入タグの隠し入力を作成します。Tag123(123 =このタグの一意の識別子)と、選択されたタグを見つけるために私のアクションメソッドでFormCollectionを反復処理します。短所は明白です:ViewModelの代わりにFormCollectionを使用し、FormCollectionを繰り返して、私の希望するデータを取得するのが悪いようです。
  • 隠れた入力を1つ作成し、選択したすべてのタグを追加します。これは、入力の現在の値から適切なIDを見つけて削除する必要があるため、タグの削除で面倒なことがあります。しかしプロは、私は1つの要素しか持たず、コントローラーアクションでそれにアクセスするためにそれをビューモデルに入れることができるということです。
  • 誰かがそれをどのようにしているか知っているかどうかを知りたい。彼らは今、基準を守っているのです。彼らがどのようにそれをするのか知りたいです。

ありがとうございます。

答えて

1

私は、SOによく似た、タグを追加するオプションを使用してウェブサイトを運営しています。
しかし私のアプローチでは、追加されたタグごとに1つの入力フィールドを作成し、新しい入力が追加されるたびにjavadript インデックスをインクリメントし、ViewModelを使用してIList<TagDTO> tags { get; set; }をバインドしましたとにかく時間の経過とともに複雑になる傾向があるので、ビューモデルはほとんど常に良い方法です)。こちらのページで作成したHTML隠し入力の例である:国際タグとおそらく禁止存在しないタグ:

name=tags.Index, value=0 
name=tags[0].tagid, value=201 
name=tags.Index, value=2 
name=tags[2].tagid, value=307 

これは私にとって一つの大きな利点があります。
私が意味するところは、すべてのタグにIDがあり、データベースの「タグ」テーブルには、サポートする各言語でこのタグの名前の列が1つあります。次のように:

tagid | name_ptBR | name_en 
201 | animais  | animals 
307 | educacional | educational 

これは私のアプローチの問題ですが、これまでのところうまくいきました。

+0

1つのタグに2つの入力フィールドがありますか?それをリストとして取得するには? – Kamyar

+1

はい。 MVCのコレクションにバインドするときは、0(ゼロ)から始まり、スキップせずにインクリメントする(例:tags [0] .tagid = 201、tags [2] .tagid = 307など) tags.Index入力はスキップされ、id 307はあなたのリストにバインドされません)、または既存のすべての入力をMVCに知らせるためにtags.Index入力を作成することができます(この意味で、tags.Indexは等しい"apple"に変更しても、問題のない名前付きタグ[apple] .tagidを入力して入力できます。 –

+1

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspxを確認してください –

1

Stack Overflowにはテキスト入力フィールドが1つしかありません。このフィールドはJavaScriptで自動補完されています。サーバーに送信されると、フィールドはスペースで区切られ、対応するタグは名前で検索されます。すべてのオプションの中で最もアクセス可能なので、私はそれをすることをお勧めします。

+0

あまりにも私はDivのコンテナを使用しています。入力ではありません。 – Kamyar

関連する問題