我正在开发MVC Web应用程序(从MVC4升级到MVC5),我无法使客户端验证工作。因此,为了解决问题,我创建了一个默认的空MVC应用程序。
不幸的是,我仍然无法正常工作,联系表格不断提交到服务器,并且afterworths显示来自服务器的错误消息,因为viewmodel无效。
这是我的代码;
Contact.cshtml
@model BLL.DTO.ContactDTO
@{
ViewBag.Title = "Contact";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>
@using (Html.BeginForm("Contact","Home", FormMethod.Post, new {id = "contactform"}))
{
@Html.LabelFor(x => x.Firstname)
@Html.TextBoxFor(x => x.Firstname)
@Html.ValidationMessageFor(x => x.Firstname)
<input type="submit" value="Verzenden"/>
}
<address>
One Microsoft Way<br />
Redmond, WA 98052-6399<br />
<abbr title="Phone">P:</abbr>
425.555.0100
</address>
<address>
<strong>Support:</strong> <a href="mailto:Support@example.com">Support@example.com</a><br/>
<strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
</address>
@*@section scripts {
<script type="text/javascript">
$("#contactform").validate({
debug: false
});
</script>
}*@
ContactDTO.cs
public class ContactDTO : BaseDTO
{
[Required (ErrorMessage = ErrorConstants.ThisFieldIsRequired)]
[Display(Name = "Voornaam")]
[MaxLength(75)]
public string Firstname { get; set; }
[Required(ErrorMessage = ErrorConstants.ThisFieldIsRequired)]
[Display(Name = "Achternaam")]
[MaxLength(75)]
public string Lastname { get; set; }
[Display(Name = "E-mail")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Display(Name = "Website")]
public string Website { get; set; }
[Required(ErrorMessage = ErrorConstants.ThisFieldIsRequired)]
[Display(Name = "Opmerkingen")]
[DataType(DataType.Text)]
public string Comments { get; set; }
}
BundleConfig.cs
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate*"));
bundles.Add(new ScriptBundle("~/bundles/msval").Include(
"~/Scripts/jquery.validate.unobtrusive.js"));
的web.config
<appSettings>
<add key="webpages:Version" value="3.0.0.0"/>
<add key="webpages:Enabled" value="false"/>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
_Layout.cshtml
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@*@Scripts.Render("~/bundles/jqueryval")*@
@Scripts.Render("~/bundles/msval")
@RenderSection("scripts", required: false)
</body>
正如您可能在代码片段中看到的那样,我也尝试过jquery.validate.js,但这也不起作用..我更喜欢使用默认的不显眼验证,但遗憾的是它一直在提交表单到服务器。我还阅读了其他几个主题(this和this),虽然问题看起来很相似,但它并没有解决我的问题。这可能是什么......?
答案 0 :(得分:0)
在我的情况下,由于我的类库命名空间和默认模型名称空间不匹配,验证无效,因此验证无效。 我纠正了它,现在工作正常。