7

Ich weiß, wenn ich nicht sequenzielle Elemente an eine Liste in MVC binden möchte, kann ich die Index Syntax here beschriebenen verwenden.Binden nicht sequenzieller Listen mit einem benutzerdefinierten Modellbinder

Ich kann jedoch nicht Remote-Validierung damit arbeiten (mit dem Attribut Remote).

Zum Beispiel, wenn ich ein Modell wie folgt aus:

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; } 
} 

Dann meiner Meinung nach nehme ich habe folgendes (ich Weglassen absichtlich Html Helfer ich für Klarheit bin mit):

<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" /> 

In einer Form-Post geht das Index Feld für die Fahrt, die das Modell Bindemittel binden alles schön, wie hilft:

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

Aber wenn Remote-Validierung auslöst, ist dies nur meine Aktion gesendet (zwei getrennte Anfragen, eine für jedes Element validiert):

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

Ohne Index, weiß Das Modell Bindemittel nicht, was damit zu tun, Dies. Es kann weder an User, List<User> noch an AddUser binden.

Was bringt mich zu meiner Frage.

Wäre es möglich, einen benutzerdefinierten Modellbinder zu schreiben, der nicht sequenzielle Listen verarbeiten kann, ohne die Notation Index verwenden zu müssen? Ich muss zugeben, dass es für mich schwierig ist zu verstehen, warum die Index Schreibweise notwendig wäre (außer vielleicht als Optimierung irgendeiner Art).

Ich verwende MVC 4 und .NET 4.5.

Hinweis: Ich habe noch nie zuvor mit benutzerdefinierten Modell Binder herumgeschmiert, so bin ich wirklich nur auf der Suche nach einer allgemeinen Anleitung, ob es möglich wäre (oder nur eine Sackgasse), und möglicherweise einige Hinweise für anfangen.

+0

der Remote-Validator In der Theorie funktionieren sollte. Können Sie Ihren Beitrag vielleicht erweitern, wie möchten Sie den Remote-Validor und Remote-Aktion aussieht? – nemesv

+0

@nemesv, Ich habe meinen Beitrag aktualisiert. Ist das genug Klärung? Weder eine Validierungsaktion, die einen 'Benutzer', eine 'Liste ' akzeptiert, noch ein 'AddUser' können gebunden werden, weil der' Index' fehlt. – Eric

+0

konnte ich mein Problem lösen, indem die Lösung von [dieser Antwort] Anpassung [1] [1]: http://stackoverflow.com/a/10801577/546561 – Eric

Antwort

0

konnte ich mein Problem zu lösen, indem die Lösung von this answer Anpassung - Eric 22. März '13 um 22:28 Uhr