【问题标题】:MVC Razor Validation not firing on textareaMVC Razor Validation 未在 textarea 上触发
【发布时间】:2011-06-16 10:28:58
【问题描述】:

我在验证 MVC Razor 中的表单时遇到问题,Binding 类是以下基于抽象类的(抽象类中没有验证)

[GeminiDisplayName("You are about To reject the following Purchase Order", false)]
    public class PORejected : PoApprovalItems
    {
        public PORejected() { }
        [GeminiDisplayName("Rejection Reason")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "Rejection Reason is Required")]
        public string RejectReason { get; set; }

        public override bool IsApproved
        {
            get
            {
                return false;
            }
        }
    }

视图如下

@model Gemini.Models.PORejected
    @section Head{
        <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
        <script src="@Url.Content("~/Scripts/PageScripts/_Approval.js")" type="text/javascript"></script>
    }
    @section TabHeader{
        <li><a href="#ApprovalItem">Reject Approval for PO @Model.PO_Number</a></li>
    }
    @section TabContent{
        @{
            Html.EnableClientValidation();
        }
        <div id="ApprovalItem">
            @{
                @Html.ValidationSummary(false)
                using (Html.BeginForm("Approve", "PO", FormMethod.Post))
                {

                @Html.Partial("Approval/ApprovalDetails", Model)
                <div class="display-label">
                    <table width="100%" cellpadding="0" cellspacing="0" border="0">
                        <tr>
                            <td width="15%">
                                @Html.LabelFor(x => x.RejectReason)
                            </td>
                            <td>
                                @Html.TextAreaFor(x => x.RejectReason, new { @Class = "mceEditor required", @style = "width:60%;" })
                                @Html.ValidationMessageFor(x => x.RejectReason)
                            </td>
                        </tr>
                    </table>
                    <div style="float: right;">
                        <input type="button" value="Close" />
                        <input type="submit" value="Reject" />
                    </div>
                </div>
                    Html.EndForm();
                }
            }
        </div>
    }

问题是当我单击提交按钮时,它会在进行任何验证之前触发,即使它应该验证

我的问题是我做错了什么?

更新 最终找到了答案,我从页面中遗漏了以下内容。 &lt;script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"&gt;&lt;/script&gt;

【问题讨论】:

    标签: asp.net-mvc validation razor


    【解决方案1】:

    最终找到了答案,我在页面上遗漏了以下内容。 &lt;script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"&gt;&lt;/script&gt;

    【讨论】:

      【解决方案2】:

      这条线是干什么用的?

      Html.EnableClientValidation(false);
      

      这会禁用客户端验证。此外,无需在每个视图上设置 UnobtrusiveParameters,只需在 web config 中设置一次即可。

      【讨论】:

      • 抱歉,这是一个编辑,我一直在尝试不同的事情来让它工作,但从未把它拿出来。不管拿出来还是不火。
      • 最终找到了答案我错过了一个电话
      猜你喜欢
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2022-08-16
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多