0

我的模型验证不在客户端浏览器中显示错误消息。表单被提交,但在我的控制器中,我的ModelState.IsValid为false,并在我的ModelState对象中显示了相应的错误消息。我不知道如何调试出了什么问题。asp.net MVC4客户端模型验证

My model class : 
Imports System.ComponentModel.DataAnnotations 
Public Class RateBO 
<Required(AllowEmptyStrings:=False, ErrorMessage:="Quantity for Miles is required!")> 
Public Property MilesQty As Decimal 
Public Property MilesAmt As Decimal 

<Required(AllowEmptyStrings:=False, ErrorMessage:="Quantity for Service is required!")> 
Public Property FirstServiceQty As Integer 
Public Property FirstServiceAmt As Integer 
Public Property SubServiceQty As Integer 
Public Property SubServiceAmt As Decimal 
Public Property TotalRate As Decimal 
End Class 

My Viewmodel class : 
Public Class FeeEntryVM 
Public Property FeeRate As UnitPriceBO 
Public Property UIFee As RateBO 
End Class 

My View : 
@ModelType JUD.ITD.Portal.SSO.JudPortal.MarshalOrderRegistry.RateEntryVM 

@Code 
ViewData("Title") = "GetRateView" 
Layout = "~/Views/Shared/_Layout.vbhtml" 
End Code 
@Using (Html.BeginForm("SubmitRate", "OrderRegistryService", FormMethod.Post, New With  {.id = "RateEntryForm"})) 
@<text> 
<div class='container-fluid span12' style="margin-left:-5%"> 
<table class="table"> 
<thead> 
    <tr> 
     <th class="span4 mobLabel" style="text-align:center">Rate Description</th> 
     <th class="span2 mobLabel" style="text-align:center">Quantity</th> 
     <th class="span1 mobLabel" style="text-align:center">Unit Price($)</th> 
     <th class="span1 mobLabel" style="text-align:center">Amount($)</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td class="span4" style="text-align:center">Service</td> 
     <td class="span2"> 
      @Html.TextBoxFor(Function(model) model.UIRate.FirstServiceQty, New With {.class = "Ratehalf", .type = "text", .id = "serviceQty"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.FirstServiceQty) 
     </td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.RateRate.FirstServiceRate, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "serviceRate"}) 
     </td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.UIRate.FirstServiceAmt, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "serviceAmt"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.FirstServiceAmt) 
     </td> 
    </tr> 
    <tr> 
     <td class="span4" style="text-align:center"> Subsequent Services</td> 
     <td class="span2"> 
      @Html.TextBoxFor(Function(model) model.UIRate.SubServiceQty, New With {.class = "Ratehalf", .type = "text", .id = "subServiceQty"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.SubServiceQty) 
     </td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.RateRate.SubServiceRate, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "subServiceRate"}) 
     </td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.UIRate.SubServiceAmt, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "SubServiceAmt"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.SubServiceAmt) 
     </td> 
    </tr> 
    <tr> 
     <td class="span4" style="text-align:center">Miles</td> 
     <td class="span2"> 
      @Html.TextBoxFor(Function(model) model.UIRate.MilesQty, New With {.class = "Ratehalf", .type = "text", .id = "milesQty"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.MilesQty) 
     </td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.RateRate.MilesRate, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "milesRate"}) 
     </td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.UIRate.MilesAmt, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "milesAmt"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.MilesAmt) 
     </td> 
    </tr> 
    <tr> 
     <td class="span4" style="text-align:center"></td> 
     <td class="span2"></td> 
     <td class="span1" style="text-align:center;"><b>Total Rate($)</b></td> 
     <td class="span1"> 
      @Html.TextBoxFor(Function(model) model.UIRate.TotalRate, New With {.class = "Ratehalf", .readOnly = True, .type = "text", .id = "totalRate"}) 
      @Html.ValidationMessageFor(Function(model) model.UIRate.TotalRate) 
     </td> 
     <td></td> 
    </tr> 
</tbody> 
</table> 
</div> 
<div class="row offDisplay"> 
<div class="rowBig"> 
    <div class="span12"> 
     <button class="half btn btn-primary span2 text-center" id="btnSubmit" type="submit">Submit</button> 
     <button class="half offset1 btn btn-primary span2 text-center" id="btnCancel" type="reset">Cancel</button> 
    </div> 
</div> 
</div> 
</text> 
End Using 

回答

1

你的问题之外,似乎有点误导,但我想你会问,为什么客户端验证不工作。请确保您有您的网页上这两个脚本:

~/Scripts/jquery.unobtrusive.min.js 

~/Scripts/jquery.validate.min.js 

我通常把它们放在一个包内BundleConfig.cs

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.unobtrusive*", 
        "~/Scripts/jquery.validate*")); 

通过使用星号*而不是min.js所述捆绑将使用非缩小的版本正在开发中,并将在生产中使用缩小版。

然后在我的页面布局:

@Scripts.Render("~/bundles/jqueryval") 
+0

谢谢尼克,我错过了这个! – user2721870

-1

使用ModelState.IsValid()左右,赶上这将解释了什么毛病的ModelState

+0

我使用我的控制器上,并为“假”与我的模特属性相应的错误信息。但我不明白为什么我的表单在验证失败时被提交。这些消息也没有显示在我的浏览器页面中。 – user2721870

+0

他已经表示他知道他的模型为什么无效,他在问为什么验证不会发生客户端(JavaScript)。 –

+0

我的不好,没有正确地阅读这个问题。请原谅我:( –