Frage

Was sind die möglichen Gründe, was Nullable <> Typen nicht zugelassen werden als TModel Parameter von System.Web.Mvc.ViewPage generic weitergegeben werden? Dies könnte manchmal praktisch sein.

In ASP.NET MVC Quelle definiert, welche TModel eine Klasse sein sollte:

public class ViewPage<TModel> : ViewPage where TModel : class

aber Nullable-Typen sind Werttypen. Vielleicht könnte Definition weniger restriktiv sein ...

War es hilfreich?

Lösung

Es wäre nicht sinnvoll, für diese im Moment zu arbeiten, da die Viewpage intern überprüft immer, dass das Modell eine Instanz von T. Sie würden nie wegen dieser Prüfung null Lage sein, zu übergeben.

Als Grund für Strukturtypen wurden in erster Linie nicht erlaubt, gab es eine Vielzahl von Gründen. Unter ihnen: (a) könnte es Menschen ermutigen, um benutzerdefinierte Strukturtypen für ein Modell zu verwenden, das zu tun, so gut wie nie die richtige Sache ist; (B) Sie kann nicht einen Strukturtyp als Parameter an Controller.UpdateModel () übergeben; (C) Modelle sollten Referenz Gleichheit haben, um die Filter können sie überprüfen und ändern; (D) die eingebauten in Strukturtypen wie int, usw., sind in der Regel nicht selbst als Modellobjekt nützlich; und (e) Strukturtypen nicht Vererbung unterstützen, z.B. ein int-Modell in eine View vorbei würde die Luft sprengen.

Es stellt sich heraus, dass (c) wahrscheinlich kein Problem ist, weil Strukturtypen unveränderlich sein sollen, aber die anderen Elemente erfordern, dass die Zulassung Strukturtypen vor unterstützt sie reichlich Gedanken und Design-Entscheidung gegeben werden. Die Folgen dieser unterstützen sind viel größer als nur die Einschränkung auf View Entfernen .

Andere Tipps

Ein einzelner Wert ist nicht wirklich ein „Modell“ - man muss nur das Wörterbuch und gegossenes verwenden könnte

?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top