Проблема с ValidationMessageFor - PullRequest
       2

Проблема с ValidationMessageFor

0 голосов
/ 25 января 2011

Привет,

Я разместил следующий код на своей странице:

<%: Html.ValidationSummary("Form not correct", new { @class = "errList" })%>

Затем на каждом свойстве у меня есть что-то вроде:

<%: Html.ValidationMessageFor(model => model.ModelViewAd.Title, "*", new { @class = "val" })%>

Проблема в том, что, как только я открываю страницу, каждый ValidationMessageFor будет показывать *, а ValidationSummary будет отображать "Форма не верна", даже если форма еще не была проверена?Однако итоговый список будет отображаться первым после проверки формы.

Мне нужно, чтобы и ValidationMessageFor, и ValidationSummary отображались только после проверки формы.

Чего мне не хватает?

Edit1: свойства имеют аннотации данных.

Edit2:

Так выглядит первая часть представления

<div id="adRegistrationForm">
            <% Html.EnableClientValidation(); %>
            <h1>Registrera din annons</h1>
            <%: Html.ValidationMessageFor(model => model.ModelViewAd, "*", new { @class = "val" })%>
            <br />
            <% using (Html.BeginForm("Register", "Ad", FormMethod.Post, new { enctype = "multipart/form-data" }))
               {%>
                <%: Html.ValidationSummary("Formuläret är inte korrekt ifyllt", new { @class = "errList" })%>

                <div class="controlTitle">
                    <%: Html.LabelFor(model => model.ModelViewAd.Title)%>
                    <%: Html.ValidationMessageFor(model => model.ModelViewAd.Title, "*", new { @class = "val" })%>
                </div>
                <div>
                    <%: Html.TextBoxFor(model => model.ModelViewAd.Title, new { @class = "tb1" })%>
                </div><br />

                <div class="controlTitle">
                    <%: Html.LabelFor(model => model.ModelViewAd.TypeOfAd)%>
                </div>
                <div>
                    <%: MvcHtmlString.Create(Html.RadioButtonListFor(model => model.ModelViewAd.TypeOfAd)) %>
                </div><br />

                <div id="divEndDate">
                    <div class="controlTitle">
                        <%: Html.LabelFor(model => model.ModelViewAd.EndDate)%>
                        <%: Html.ValidationMessageFor(model => model.ModelViewAd.EndDate, "*", new { @class = "val" })%>
                    </div>
                    <div>
                        <%: Html.TextBoxFor(model => model.ModelViewAd.EndDate)%>
                    </div>
                </div>

Итак выглядит первая часть viewClass:

[PropertiesMustMatchAttribute("P1", "P2", ErrorMessage = "Lösenorden stämmer inte")]
    public class ModelViewAdRegister
    {
        #region Fields
        private string _title;
        private string _description;
        #endregion

        [Required(ErrorMessage = "Titel saknas")]
        [StringLength(50, MinimumLength = 5, ErrorMessage = "Titeln får vara mellan 5-50 tecken lång")]
        [DisplayName("Titel")]
        public string Title
        {
            get { return _title; }
            set { _title = value ?? string.Empty; }
        }

        [Required(ErrorMessage = "Pris saknas")]
        [DisplayName("Pris (skr)")]
        public Decimal Price { get; set; }

        [Required(ErrorMessage = "Annons text saknas")]
        [DisplayName("Annons text")]
        [StringLength(50000, MinimumLength = 10, ErrorMessage = "Annons texten får vara mellan 10-50000 tecken lång")]
        public string Description
        {
            get { return _description; }
            set { _description = value ?? string.Empty; }
        }

1 Ответ

1 голос
/ 27 января 2011

Я воспроизвел вашу проблему. Ваша проблема в том, что ваше резюме проверки находится внутри вашей формы. Переместить эту строку

<%: Html.ValidationSummary("Formuläret är inte korrekt ifyllt", new { @class = "errList" })%>

До этой строки:

 <% using (Html.BeginForm("Register", "Ad", FormMethod.Post, new { enctype = "multipart/form-data" }))
           {%>

И все должно работать просто отлично !!

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