Ich muss ein Formular mit allen Arten von verschiedenen Suchsteuerelementen verarbeiten, aber diese Suchsteuerelemente befinden sich nun innerhalb einer Masterseite und so wurde den IDs zusätzliches Material hinzugefügt ('ct100 $ Body $ TextBox_Postal' im Gegensatz zu ' TextBox_Postal ').
Ich konnte das beheben, indem ich ClientIDMode = CliendIDMode.Static einstellte, das funktioniert großartig, da es nicht versucht, den namingcontainer in die ID aufzunehmen. Ich bin zuversichtlich, dass es auf der Seite nie zwei gleiche Kontrollen geben wird, damit das funktioniert.
Das Problem ist, wenn das Formular zurückgeschickt wird, werden die Steuerelemente mit Namen verarbeitet. Die Namen haben immer noch das Format 'ct1200 $ Body $ ..', daher kann die Funktion 'processform' keine Steuerelemente finden. Gibt es eine Möglichkeit, ASP dazu zu bringen, die Namen auch im "Static" -Modus festzulegen?
Kurze Antwort ist nein, Sie müssen das Rendering des Namensattributs überschreiben, Beispiel unten von dieser Frage: ASP.NET: Wie man das Attribut 'name' von den Serversteuerelementen entfernt?
%Vor%Ich denke nicht, dass es eine Möglichkeit gibt, den Namen der Steuerelemente entsprechend zu setzen, aber Sie könnten alternativ ihre Namen sehr einfach mit JQuery ändern, wenn das eine Option für Sie ist.
Einige Erklärung:
Angenommen, Sie haben eine Markierung wie folgt:
%Vor% Sie könnten alle diese Kontrollnamen automatisch so ändern, dass sie die gleichen Namen haben wie ihre IDs, indem Sie so etwas in window.load
:
Alles, was Sie für diese Arbeit benötigen, ist JQuery; Sie könnten Google CDN verwenden: Ссылка
Tags und Links asp.net-4.0