场景:
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
包含partial的视图:
<% 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
答案 0 :(得分:0)
当调用POST操作时,您可能没有将POST结果解析为AdresViewModel的对象。
你可以复制你的行动代码吗?
例如:(C#)
public ActionResult Edit(AdresViewModel mod) {
}
修改强>
你做了:<% Html.RenderPartial("Adres", New ViewDataDictionary(Model.DienstAdres))%>
但它应该是:
<% Html.RenderPartial("Adres", Model.DienstAdres, new ViewDataDictionary()); %>