Was bewirkt das EnumDataType-Attribut in ASP.NET MVC?

8

Ich habe string -Eigenschaften für einige meiner Modellobjekte verwendet, um enums darzustellen. Ich verwende nur Zeichenketten, weil Entity Framework Code First noch keine Enumeration unterstützt. Wie auch immer, ich habe bemerkt, dass es ein Attribut in System.ComponentModel.DataAnnotations namens EnumDataType gibt. Ich habe versucht, dieses Attribut zu setzen, aber es scheint nichts zu beeinflussen.

Ich sollte erwähnen, dass es mein ultimatives Ziel ist, dass die entsprechende Dropdown-Liste für jeden Enum-Typ in einer "create" - oder "edit" -Ansicht erscheint. Ich dachte, vielleicht macht EnumDataType dies in einem Auto-Scaffolding-Szenario leichter, aber ich bin mir nicht sicher, ob das der Fall ist.

Drei Fragen:

  1. Hat EnumDataType einen Zweck in ASP.NET MVC?
  2. Wenn ja, was macht es?
  3. Müssen meine Modelleigenschaften int (anstelle von string ) sein, um EnumDataType ?
  4. zu nutzen?
devuxer 27.04.2011, 00:54
quelle

4 Antworten

8

EnumDataType wird derzeit nur von dynamischen ASP.NET-Datenstandorten (in .NET 4.0) unterstützt. Sie können im Allgemeinen einen eigenen HTML-Helfer erstellen, der die Eigenschaftsprüfung übernimmt, wenn er das Attribut enthält (durch Reflektion) und ein Drop-Down-Objekt mit Werten aus der verknüpften Enumeration erstellt.

    
Ladislav Mrnka 27.04.2011, 07:20
quelle
4

Die beste Lösung, die ich dafür gefunden habe, war die Kombination dieses Blog mit dieser Antwort . Dies macht sowohl die Ansicht als auch das Modell sehr lesbar und wartbar.

Siehe meine vollständige Antwort hier .

Modell:

%Vor%

Anzeigen:

%Vor%     
Nick Evans 04.12.2011 13:56
quelle
0

MVC 3 hat keine Logik, um EnumDataTypeAttribute zu behandeln.

    
marcind 27.04.2011 01:10
quelle
0

Entweder MVC3 oder EF4.1 CodeFirst scheint Eigenschaften mit diesem Attribut zu validieren. Handlich aufgrund der fehlenden Enum-Unterstützung in EF, was bedeutet, dass Sie das Attribut auf eine Integer-Eigenschaft setzen können.

    
Betty 19.06.2011 21:32
quelle