Как остановить скрипт проверки MVC3, работающий при загрузке страницы? - PullRequest
1 голос
/ 16 марта 2011

У меня есть простая форма входа в систему, основанная на следующем элементе модели

   public class LogOnModelItem
    {
        [Required(ErrorMessage="Brukernavn er påkrevd")]
        [DisplayName("Brukernavn")]
        public string UserName { get; set; }

        [Required(ErrorMessage="Passord er påkrevd")]
        [DataType(DataType.Password)]
        [DisplayName("Passord")]
        public string Password { get; set; }

        [DisplayName("Husk meg?")]
        public bool RememberMe { get; set; }
    }

Вид:

<h2>Login</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <table>
        <tr>
            <td>@Html.LabelFor(model => model.UserName)</td>
            <td>
                @Html.EditorFor(model => model.UserName)
                @Html.ValidationMessageFor(model => model.UserName)
            </td>
        </tr>
        <tr>
            <td>@Html.LabelFor(model => model.Password)</td>
            <td>
                @Html.EditorFor(model => model.Password)
                @Html.ValidationMessageFor(model => model.Password)
            </td>
        </tr>        <tr>
            <td>@Html.LabelFor(model => model.RememberMe)</td>
            <td>
                @Html.EditorFor(model => model.RememberMe)
                @Html.ValidationMessageFor(model => model.RememberMe)
            </td>
        </tr>
     </table>
        <p>
            <input type="submit" value="Create" />
        </p>
}

Контроллер:

   public ActionResult Login(LogOnModelItem lmi)
    {
        return View(lmi);
    }

Когда я загружаю это в браузер, проверка запускается при загрузке страницы. Затем он выделяет имя пользователя и пароль красным цветом, а сообщение об ошибке выдается после каждой строки. У меня есть 3 вопроса в порядке важности:

1: Как сделать так, чтобы проверка не выполнялась до тех пор, пока пользователь не нажмет кнопку подтверждения. 2: Как отобразить сводку проверки? 3: Как мне сделать поле "username" выбранным по умолчанию и готовым принять ввод?

Ответ на # 1:

public ActionResult Login()
{
    return View();
}
[HttpPost]
public ActionResult Login(LogOnModelItem lmi)
{
    return View(lmi);
}

Ответ на # 2

@Html.ValidationSummary(false)

Ответ на # 3

<script type="text/javascript">
    $(document).ready(function () {
        $('#UserName').focus();
    });
</script>

1 Ответ

3 голосов
/ 16 марта 2011

1: Как убедиться, что проверка не запускается до тех пор, пока пользователь не нажмет на отправку

Это уже должно иметь место.Если у вас есть действие GET, визуализирующее эту форму и предоставляющее модель представления, ошибок валидации не будет.Это действие POST, которое показывает сообщения проверки, и если у вас включена проверка клиента, это также может произойти onblur.

2: Как отобразить сводку проверки?

Вы уже сделали: @Html.ValidationSummary(true)

3: Как мне сделать поле "username" выбранное по умолчанию и готовое к приему ввода?

Вы могли быиспользуйте JavaScript:

$(function() {
    $('#UserName').focus();    
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...