MVC Razor Validation не работает на textarea - PullRequest
2 голосов
/ 16 июня 2011

У меня возникла проблема с проверкой формы в 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>
    }

Дело в том, что когда я нажимаю кнопку отправки, она срабатывает перед выполнением любой проверки, даже если она должна проверять

мой вопрос: что я делаю не так?

ОБНОВЛЕНО нашел ответ, в конце концов я пропустил следующее со страницы. <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

Ответы [ 2 ]

2 голосов
/ 22 мая 2012

нашел ответ, в конце концов мне не хватало следующего со страницы. <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

1 голос
/ 16 июня 2011

Для чего нужна эта строка?

Html.EnableClientValidation(false);

Это отключает проверку клиента. Кроме того, нет необходимости устанавливать UnobtrusiveParameters для каждого представления, установите их один раз в веб-конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...