Модель с атрибутом Required не отображает никаких сообщений об ошибках при неправильном вводе пользователем - PullRequest
2 голосов
/ 14 марта 2012

У меня есть приложение, в котором есть учетная запись пользователя и продавца.Я хочу осуществить валидацию регистрационной формы продавца.Я сделал модель для розничной торговли с обязательной коннотацией, но на странице все еще не отображаются сообщения о неправильных входных данных.Любое предложение, как я могу достичь своей цели.Я использую Asp.net MVC

[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")]
public class RegisterStore
{
    [Required(AllowEmptyStrings = false, ErrorMessage = "Store Name is Required")]
    [DataType(DataType.Text)]
    [Display(Name = "Store Name")]
    public string Store_Name { get; set; }
  .
  .       
    Similarly other properties ...
  .
  .

}

Код для просмотра выглядит как

 <h2>Create a Store Account</h2>
<p>
    Use the form below to create a new account. 
</p>
<% using (Html.BeginForm())
   {%>
    <%: Html.ValidationSummary(true) %>

    <fieldset>
        <legend>Retailer Information</legend>

        <div class="editor-label">
            <%: Html.LabelFor(model => model.Store_Name) %>
        </div>
        <div class="editor-field">
            <%: Html.TextBoxFor(model => model.Store_Name) %>
            <%: Html.ValidationMessageFor(model => model.Store_Name) %>
        </div>
        .

        ... Similar DIVs for other properties ....
        .
        .
        .
        .

        <p>
            <input type="submit" value="Next" />
        </p>
    </fieldset>

<% } %>

Код для контроллера выглядит как

  [HttpPost()]
    public ActionResult RetailerRegisteration(RegisterStore storeModel)
    {
        //ViewData["genders"] = Genders;
        Debug.WriteLine("Started RetailerRegisteration");
        if (string.IsNullOrEmpty(storeModel.UserName))
            ModelState.AddModelError(string.Empty, "Please enter Username");     
        if (string.IsNullOrEmpty(storeModel.Store_Name))
            ModelState.AddModelError(string.Empty, "Please enter a store name");
        if (!string.IsNullOrEmpty(storeModel.Email) || !storeModel.Email.Contains("@"))
            ModelState.AddModelError(string.Empty, "Please enter a valid e-mail address!");
        if (string.IsNullOrEmpty(storeModel.Password))
            ModelState.AddModelError(string.Empty, "Please enter a Password");
        if(! storeModel.Password.Equals(storeModel.ConfirmPassword))
            ModelState.AddModelError(string.Empty, "The Passwords must match");

        if (ModelState.IsValid)
        {
           ... Create Store Account ....

        }

Ответы [ 3 ]

2 голосов
/ 14 марта 2012

Используете ли вы проверку клиента или только проверку на стороне сервера?

Если вы проверяете на стороне сервера, проверяете ли вы ModelState.IsValid на POST?Проверка на самом деле не сработает, пока вы не проверите это свойство.

2 голосов
/ 14 марта 2012

Попробуйте <%: Html.ValidationSummary(false) %>, чтобы показать все ошибки.

Также, пожалуйста, обратитесь к этому вопросу.

0 голосов
/ 19 апреля 2012

Вы используете MVC2 или MVC3?Есть тонкие различия между ними.В любом случае вы должны включить соответствующие JavaScript-скрипты JQuery или Ajax для проверки на стороне клиента.

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