Nullable <> als Modell für die View-Seite
-
06-07-2019 - |
Frage
Was sind die möglichen Gründe, was Nullable <> Typen nicht zugelassen werden als TModel Parameter von System.Web.Mvc.ViewPage
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 ...
Lösung
Es wäre nicht sinnvoll, für diese im Moment zu arbeiten, da die Viewpage
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
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
?