MVC Daten Annotation - Pflichtfeld nicht arbeiten
-
06-07-2019 - |
Frage
Hallo, ich habe folgendes Kabeljau in meinem app aber mit nur zwei Feldern, die es nicht funktioniert.
[Required]
public string DevelopmentPM { get; set; }
Die folgenden Testläufe und Pässe:
[TestMethod]
public void SiteConstruction_MODEL_DevelopmentPM_Is_Required()
{
//arrange
var propertyInfo = typeof(SiteConstructionMetadata).GetProperty
("DevelopmentPM");
//act
var attribute = propertyInfo.GetCustomAttributes(typeof(RequiredAttribute),
true).Cast<RequiredAttribute>().FirstOrDefault();
//assert
Assert.IsNotNull(attribute);
}
Meine Controlller wie folgt aussehen:
TryUpdateModel(siteConstruction);
if (!ModelState.IsValid)
return View(siteConstruction);
Ich habe andere erforderlichen Felder in Modell und sie sind in Ordnung. Dieses Feld ist null (I geprüft), aber nicht das Modell ungültig machen -. So dass keine Validierung und einen Fehler beim Speichern
Meine Ansicht
<li>
<label for="DevelopmentPM">
<strong>Development PM:</strong></label>
<%= Html.TextBox("DevelopmentPM") %>
<%= Html.ValidationMessage("DevelopmentPM", "*") %>
</li>
Ich habe an meinem .dbml (LINQ to SQL) sieht, Rechtschreibung sieht ok.
Ich bin ich etwas fehlt einfach -. Bitte verrückt
Danke
Davy
Lösung
[MetadataType (typeof (SiteConstructionMetadata))] über meine partielle Klasse, nahm ich es für selbstverständlich ich dort hatte.
Das nächste Mal statt Schnipsel veröffentlichen, ich glaube, ich werde es post alle - smeone wous, dass ziemlich schnell gesichtet haben
.Davy
Andere Tipps
Stellen Sie sicher, dass Sie die DataAnnotationsModelBinder
den Standardbinder Modell machen. Fügen Sie folgende in Ihrer Global.asax.cs
:
ModelBinders.Binders.DefaultBinder = new Microsoft.Web.Mvc.DataAnnotations.DataAnnotationsModelBinder();
und stellen Sie sicher, dass Sie die System.ComponentModel.DataAnnotations.dll
Montage in Ihrem Projekt verwiesen haben. Siehe dieses Tutorial für weitere Details.