2

簡単に言えば、ユーザーが JS でいくつかのタグを選択してコントローラーに送信できるようにしたいと考えています。ここに私の提案があります:

  • (123 = このタグの一意の識別子) のような命名規則を使用して、挿入されたタグごとに非表示の入力を作成し、アクション メソッドをTag123反復処理して、どのタグが選択されているかを確認します。FormCollection短所は明らかです。目的のデータを取得するためFormCollectionに の代わりに使用しViewModelて反復することはFormCollection、私には悪いように思えます。
  • 非表示の入力を 1 つ作成し、選択したすべてのタグをそれに追加します。入力の現在の値から正しいIDを見つけて削除する必要があるため、これはタグの削除で面倒になる可能性があります。しかし、長所は、要素が 1 つしかなく、それをビューモデルに配置してコントローラー アクションでアクセスできることです。
  • SOがどのように機能するかを誰かが知っているかどうかを知りたいです。彼らは今、一種の基準を定義しています。彼らがどのようにそれを行うか知りたいです。

ありがとう。

4

2 に答える 2

1

スタック オーバーフローにはテキスト入力フィールドが 1 つしかなく、JavaScript によるオートコンプリートで強化されています。サーバーに送信されると、フィールドはスペースで分割され、対応するタグが名前で検索されます。すべてのオプションの中で最もアクセスしやすいため、これを行うことをお勧めします。

于 2012-04-14T23:10:14.080 に答える
1

SOのように、タグを追加するオプションを使用してWebサイトを実行しています。
しかし、この問題に対する私のアプローチでは、追加されたタグごとに 1 つの入力フィールドを作成し、新しい入力が追加されるたびに JavaScriptインデックスIList<TagDTO> tags { get; set; }変数をインクリメントし、ViewModel を使用してバインドするようになりました(フォームは複雑になる傾向があります)。とにかく時間がかかるので、ほとんどの場合、ビューモデルが良い方法です)。ページで作成された html 非表示入力の例を次に示します。

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

これには、私にとって大きな利点が 1 つあります。それは、タグが国際化され、存在しないタグが許可されない可能性があることです。
つまり、すべてのタグには ID があり、データベースの「タグ」テーブルには、サポートする各言語のこのタグの名前の列が 1 つあります。そのような:

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

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

于 2012-04-14T23:19:56.037 に答える