So habe ich an einen Freund lyrisch über eine ASP.NET MVC wurde Wachsen, die im Begriff ist, die Entwicklung einer neuen Benutzeroberfläche zu starten ....ASP.NET MVC, eine Plugin-Architektur und id Kollisionen
Er fragte Wenn Sie das folgende Problem mit ASP.NET MVC lösen könnten:
Stellen Sie sich eine Web-App vor, die Plugins unterstützt. In der aktuellen ASP.NET WebForms App stellt der Pluggin-Entwickler eine Benutzersteuerung und einige JQuery-Funktionen bereit. Die IDs der Steuerelemente sind eindeutig, sodass JQuery immer die richtigen DOM-Elemente auswählen kann und der dahinter stehende Code die richtigen Steuerelementauflistungen verarbeiten kann.
Ich schlug vor, dass in MVC, da wir eine beliebige Anzahl von Formen haben können ... jedes Plugin könnte als eine Teilansicht implementiert werden.
Jede partialView würde von ihrer eigenen Form umschlossen werden, also die relevante Controller Action und würde daher nur die in der partialView definierten Formulardaten erhalten - aus diesem Blickwinkel sind uns DOM ID Kollisionen egal.
Allerdings wäre der HTML-Code ungültig, wenn eine ID-Kollision aufgetreten wäre und daher JQuery, geschrieben vom Plugin-Entwickler, fehlschlagen könnte!
Ich bin nicht sicher, wie wir herumkommen könnte ...
Ich mag die Idee nicht für Kollisionen die PartialView Parsen, wenn das Plugin hinzugefügt wird und ich nicht wie die Idee, die IDs der Einschränkung, dass die Plugin-Entwickler hat Zugriff auf.
Vielleicht könnten die IDs zur Laufzeit mit einem Präfix ergänzt werden, und die Modellbinder könnten mit diesem Präfix versehen werden?
Egal welche Lösung, es sollte für den Plugin-Entwickler transparent sein - sie sollten sich nicht um die ID-Generierung kümmern. – iasksillyquestions
Ok.Ich habe nur einen Beispielcode hinzugefügt, der zeigt, wie man das macht, und der Plugin-Entwickler muss sich nicht darum kümmern, wie die eindeutige ID gesetzt wird, sie müssen ihn nur benutzen, um von jQuery auf das Steuerelement zuzugreifen. –