在是否MVC3或MVC4用于客户端验证@ Html.ValidationSummary工作? [英] Does @Html.ValidationSummary work for client side validation in MVC3 or MVC4?

查看:88
本文介绍了在是否MVC3或MVC4用于客户端验证@ Html.ValidationSummary工作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的code:

  @ Html.ValidationSummary(假)
@ Html.ValidationSummary(真,XXX)@using(Ajax.BeginForm(
        行动,
        菜单,
        空值,
        新AjaxOptions
        {
            UpdateTargetId =更新消息,
            InsertionMode = InsertionMode.Replace,
            列举HTTPMethod =POST
            的onSuccess =成功
        },{新@id =menuForm}))
{
    < D​​L>
    < D​​T> @ Html.LabelFor(型号=> model.Order)LT; / DT>
    < D​​D> @ Html.TextBoxFor(型号=> model.Order)LT; / DD>
    < D​​D> @ Html.ValidationMessageFor(型号=> model.Order)LT; / DD>
    < / DL>

当我输入的999订单价值,那么我立刻拿到客户端验证,显示我的错误信息只是订单文本框后。但是没有在Html.ValidationSummary区域显示出来。是否有可能与客户端验证使用?

下面是我的模型:

 公共类菜单
{
    [范围(0,99,的ErrorMessage ={0}必须介于{1}和{2})]
    [显示名称(订单)]
    公众诠释令{搞定;组; }

我的web配置:

 <&的appSettings GT;
    <添加键=网页:启用VALUE =FALSE/>
    <添加键=ClientValidationEnabledVALUE =真/>
    <添加键=UnobtrusiveJavaScriptEnabledVALUE =真/>
  < /的appSettings>


解决方案

我不是100%肯定,但验证摘要我可以在MVC 3默认应用程序发现的形式之内。也许是因为您的验证摘要坐在他们没有得到更新的形式之外。
当您移动表单中验证总结会发生什么?

从:

  @ Html.ValidationSummary(假)
@ Html.ValidationSummary(真,XXX)@using(Ajax.BeginForm(
        行动,
        菜单,
        空值,
        新AjaxOptions
        {
            UpdateTargetId =更新消息,
            InsertionMode = InsertionMode.Replace,
            列举HTTPMethod =POST
            的onSuccess =成功
        },{新@id =menuForm}))
{
    < D​​L>
    < D​​T> @ Html.LabelFor(型号=> model.Order)LT; / DT>
    < D​​D> @ Html.TextBoxFor(型号=> model.Order)LT; / DD>
    < D​​D> @ Html.ValidationMessageFor(型号=> model.Order)LT; / DD>
    < / DL>

要:

  @using(Ajax.BeginForm(
        行动,
        菜单,
        空值,
        新AjaxOptions
        {
            UpdateTargetId =更新消息,
            InsertionMode = InsertionMode.Replace,
            列举HTTPMethod =POST
            的onSuccess =成功
        },{新@id =menuForm}))
{
    @ Html.ValidationSummary(假)
    @ Html.ValidationSummary(真,XXX)
    < D​​L>
    < D​​T> @ Html.LabelFor(型号=> model.Order)LT; / DT>
    < D​​D> @ Html.TextBoxFor(型号=> model.Order)LT; / DD>
    < D​​D> @ Html.ValidationMessageFor(型号=> model.Order)LT; / DD>
    < / DL>

I have the following code:

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx")

@using (Ajax.BeginForm(
        action,
        "Menus",
        null,
        new AjaxOptions
        {
            UpdateTargetId = "update-message",
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnSuccess = success
        }, new { @id = "menuForm" }))
{
    <dl>
    <dt>@Html.LabelFor(model => model.Order)</dt>
    <dd>@Html.TextBoxFor(model => model.Order)</dd>
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd>
    </dl>

When I enter an Order value of 999 then I immediately get client side validation that shows me an error message just after the Order Text box. However nothing shows up in the Html.ValidationSummary area. Is it possible to use this with client side validation?

Here is my model:

public class Menu
{
    [Range(0, 99, ErrorMessage = "{0} must be between {1} and {2}")]
    [DisplayName("Order")]
    public int Order { get; set; }

My web config:

  <appSettings>
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

解决方案

I'm not 100% certain but the validation summary I can find in the MVC 3 default application is within the Form. Maybe because your validation summaries are sitting outside of the form they don't get updated. What happens when you move the Validation summary inside the form?

From:

@Html.ValidationSummary(false) 
@Html.ValidationSummary(true, "xxx")

@using (Ajax.BeginForm(
        action,
        "Menus",
        null,
        new AjaxOptions
        {
            UpdateTargetId = "update-message",
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnSuccess = success
        }, new { @id = "menuForm" }))
{
    <dl>
    <dt>@Html.LabelFor(model => model.Order)</dt>
    <dd>@Html.TextBoxFor(model => model.Order)</dd>
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd>
    </dl>

To:

@using (Ajax.BeginForm(
        action,
        "Menus",
        null,
        new AjaxOptions
        {
            UpdateTargetId = "update-message",
            InsertionMode = InsertionMode.Replace,
            HttpMethod = "POST",
            OnSuccess = success
        }, new { @id = "menuForm" }))
{
    @Html.ValidationSummary(false) 
    @Html.ValidationSummary(true, "xxx")
    <dl>
    <dt>@Html.LabelFor(model => model.Order)</dt>
    <dd>@Html.TextBoxFor(model => model.Order)</dd>
    <dd>@Html.ValidationMessageFor(model => model.Order)</dd>
    </dl>

这篇关于在是否MVC3或MVC4用于客户端验证@ Html.ValidationSummary工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆