Сценарий:
Viewmodel dienstViewModel содержит AdresViewModel
Public Class AdresViewModel
<Required(ErrorMessage:="Gelieve een straatnaam op te geven")>
<DisplayName("Straat:")>
Property Straat As String
<Required(ErrorMessage:="Gelieve een huisnummer op te geven")>
<DisplayName("Huisnummer:")>
Property HuisNummer As String
<Required(ErrorMessage:="Gelieve een gemeente op te geven")>
<DisplayName("Gemeente:")>
<RegularExpression("\b[a-zA-Z0-9._%+-]+,\s[0-9]{4}", ErrorMessage:="Selecteer de correcte gemeente")>
Property Gemeente As String
<DisplayName("Bus")>
Property Bus As Integer
End Class
Представление, которое содержит частичное:
<% Using Html.BeginForm()%>
<%: Html.ValidationSummary(True) %>
<fieldset>
<legend>Vervolledig het onderstaand formulier:</legend>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.DienstNaam) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.DienstNaam) %>
<%: Html.ValidationMessageFor(Function(model) model.DienstNaam) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.DienstOmschrijving) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.DienstOmschrijving) %>
<%: Html.ValidationMessageFor(Function(model) model.DienstOmschrijving) %>
</div>
</fieldset>
<fieldset>
<legend>Adres gegevens</legend>
<% Html.RenderPartial("Adres", New ViewDataDictionary(Model.DienstAdres))%>
</fieldset><p>
<input type="submit" value="Create" />
</p>
<% End Using %>
Когда я нажимаю кнопку подтверждения в концетолько первые 2 текстовых поля проверяются.Как мне убедиться, что частичное представление также проверяется на корректность ввода?
Или частичные представления используются только для отображения информации, а не для ее получения?
Частичное представление
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of Anip.WebGUI.ViewModels.AdresViewModel)" %>
<%-- The following line works around an ASP.NET compiler warning --%>
<%: ""%>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.Straat)%>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.Straat)%>
<%: Html.ValidationMessageFor(Function(model) model.Straat)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.HuisNummer)%>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.HuisNummer)%>
<%: Html.ValidationMessageFor(Function(model) model.HuisNummer)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.Bus)%>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.Bus)%>
<%: Html.ValidationMessageFor(Function(model) model.Bus)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(Function(model) model.Gemeente)%>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(Function(model) model.Gemeente)%>
<%: Html.ValidationMessageFor(Function(model) model.Gemeente)%>
</div>
Методы контроллера, вызывающие представления
'
' GET: /Dienst/Create
Function Create() As ActionResult
Return View(New DienstViewModel())
End Function
'
' POST: /Dienst/Create
<HttpPost()> _
Function Create(ByVal viewModel As DienstViewModel) As ActionResult
If ModelState.IsValid Then
Try
' TODO: Add insert logic here
Return RedirectToAction("Index")
Catch
Return View(viewModel)
End Try
Else
Return View(viewModel)
End If