2015-12-10 71 views
1

我在服务模型MVC模型验证未触发

<DisplayName("Description")> 
<DataType(DataType.Text)> 
<StringLength(30)> 
Public Property Description() As String 
    Get 
     Return m_Description 
    End Get 
    Set 
     m_Description = Value 
    End Set 
End Property 
Private m_Description As String 

以下内容,这在我的局部视图

@ModelType CDB.ServiceDetail 

@Code 
    Dim sb as New StringBuilder  

    'Description 
     sb.Append("<div class=""rowBlock"">") 
     sb.Append("<div class=""rowTitle"">") 
     sb.Append(Html.DisplayNameFor(Function(model) model.Description)) 
     sb.Append(":</div><div class=""rowValue"">") 
     sb.Append(Html.TextBoxFor(Function(model) model.Description)) 
     sb.Append("</div>") 
     sb.Append("</div>") 
End Code 

<div id="divService" name="divService" style="width:100%"> 

    @Html.Raw(sb.ToString()) 

</div> 

如果我的描述键入超过30个字符它不错误。任何想法为什么?如果这是相关的,我正在使用MVC5。

UPDATE 我在_layout master中的脚本。

<script src="@Url.Content("~/Scripts/kendo/2015.3.1111/jquery.min.js")"></script> 
<script src="@Url.Content("~/Scripts/kendo/2015.3.1111/jszip.min.js")"></script> 
<script src="@Url.Content("~/Scripts/kendo/2015.3.1111/kendo.all.min.js")"></script> 
<script src="@Url.Content("~/Scripts/kendo/2015.3.1111/kendo.aspnetmvc.min.js")"></script> 
<script src="@Url.Content("~/Scripts/kendo.modernizr.custom.js")"></script> 
+0

当您在控制器检查ModelState.IsValid,它表明该模型是有效的? – davidallyoung

+0

@DavidY我是新来的MVC ...我认为这些设置做了客户端验证,并且我看到验证发生在客户端。示例... https://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/ – Mych

+0

他们将执行客户端验证,但您也可以执行服务器方面验证。如果服务器端验证工作,我会认为可能有问题,如何为部分视图设置jQuery。通常一个视图会继承一个共享视图,也就是_layout.cshtml文件,默认情况下该文件包含jquery以供验证。我怀疑这可能会在部分视图中丢失。 – davidallyoung

回答

1

尝试将jqueryval插件的脚本渲染添加到您的局部视图中。

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

这些软件包默认设置在AppStart.BundleConfig的mvc模板中。

VB语法:

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

这个技巧...已经为别人添加了vb razor语法。 – Mych