Частичное Asp MVC не проверено - PullRequest
1 голос
/ 04 апреля 2011

Сценарий:

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 

1 Ответ

0 голосов
/ 04 апреля 2011

Возможно, вы не анализируете свой результат POST в объекте AdresViewModel, когда вызывается действие POST.

Вы можете скопировать код своего действия?

например: (C #)

public ActionResult Edit(AdresViewModel mod) {

}

Редактировать:

Вы сделали:

<% Html.RenderPartial("Adres", New ViewDataDictionary(Model.DienstAdres))%>

но этобыть:

<% Html.RenderPartial("Adres", Model.DienstAdres, new ViewDataDictionary()); %>
...