8

非シーケンシャル要素をMVCのリストにバインドしたい場合は、ここでIndex説明する構文を使用できることを知っています。

ただし、これを処理するためのリモート検証を取得できません(Remote属性を使用)。

たとえば、次のようなモデルがある場合:

public class AddUsers {
    public List<User> Users { get; set; }
    public string Comment { get; set; }
}

public class User {
    [Remote("UsernameAvailable", "User")]
    public string Name { get; set; }
}

次に、私の見解では、次のようなものがあるとします(わかりやすくするために、使用しているHtmlヘルパーを意図的に省略しています)。

<input type="hidden" name="Users.Index" value="foo" />
<input type="text" name="Users[foo].Name" />

<input type="hidden" name="Users.Index" value="bar" />
<input type="text" name="Users[bar].Name" />

フォームの投稿では、Indexフィールドはライドに沿って進みます。これは、モデルバインダーが次のようにすべてをうまくバインドするのに役立ちます。

Comment=bla&Users.Index=foo&Users[foo].Name=john&Users.Index=bar&Users[bar].Name=bob

しかし、リモート検証がトリガーされると、これだけが私のアクションに送信されます(2つの別々のリクエスト、検証されるアイテムごとに1つ):

Users[foo].Name=john
Users[bar].Name=bob

がないとIndex、モデルバインダーはこれをどうするかわかりません。User、、、またはにバインドすることはできませList<User>AddUser

それは私の質問に私をもたらします。

Index表記を使用せずに非順次リストを処理できるカスタムモデルバインダーを作成する方法はありますか?なぜIndex表記が必要なのかを理解するのは難しいことを認めなければなりません(おそらく何らかの最適化を除いて)。

私はMVC4と.NET4.5を使用しています。

注:私はこれまでカスタムモデルバインダーをいじったことがないので、それが可能かどうか(または行き止まり)についての一般的なガイダンスと、おそらく開始するためのいくつかのポインターを探しています。

4

1 に答える 1

0

私はこの答えからの解決策を適応させることによって私の問題を解決することができました– Eric Mar 22 '13 at 22:28

于 2014-02-07T16:05:51.543 に答える