Ich habe eine Seite mit 2 Formen darauf. Einer von ihnen hat eine Dropdown-Liste darauf:Leere Dropdown-Liste Validierung in asp.net mvc
<form ...>
<%: Html.DropDownListFor(x => Model.NewForm.FormId, Model.Forms)%>
<%: Html.ValidationMessageFor(x => Model.NewForm.FormId, "*")%>
<input type="submit" value="Add" />
</form>
Die NewForm Eigenschaft Modell ist:
public class AddFormViewModel
{
[Required]
[DisplayName("Form Id:")]
public int? FormId { get; set; }
}
Ich habe bemerkt, dass, wenn der Dropdown-Liste leer ist, die ‚Form‘ Argument ist immer null und ModelState ist immer gültig.
Wenn Dropdown-Liste nicht leer ist, funktioniert alles wie erwartet, "Form" ist nicht null.
Der Wert der Dropdown-Liste wird nicht gesendet, wenn sie leer ist. Dies ist das Standardverhalten, aber wie funktioniert die Validierung?
Einige Ideen:
1) I eine Eigenschaft hinzufügen Modell anzuzeigen, die ein versteckter Eingang auf Seite sein werden, nur Modell Binder Arbeit zu machen;
2) Individuelle Binder Modell
Was sind Ihre Ideen?
Wenn Sie leer sagen, meinen Sie, es gibt keine Optionen in der Auswahlliste oder keine Option ausgewählt wurde? – Paul
Keine Optionen in der Auswahlliste. –
Wenn Sie der Auswahlliste einen Standardwert mit value = "null" text = "Select Option" hinzufügen, bewirkt der Nullwert, dass der standardmäßige ModelBinder die Auswahl trifft. – Paul