Проверка клиента asp.net MVC 3.0 не работает - PullRequest
4 голосов
/ 07 октября 2011

Это код в моем частичном представлении -

@using (Ajax.BeginForm("SaveLayout", new AjaxOptions { HttpMethod = "Post"}))
{
@Html.ValidationSummary(true)
<div style="padding: 10px;">
    <div class="editor-field">
        Layout Name: @Html.EditorFor(m => m.Name)
        @Html.ValidationMessageFor(m => m.Name)</div>
    <br />
    <br />
    <input type="submit" value="Save" />
    <input type="button" onclick="CloseDialog()" value="Cancel" />
</div>
}

в моем _Layout.cshtml выглядит так -

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

У меня есть это в моем корне web.config -

<add key="ClientValidationEnabled" value="true"/> 
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

вот так выглядит действие моего контроллера -

[HttpPost]
public ActionResult SaveLayout(Model.Layout layout)
{
    if (ModelState.IsValid)
    {
        ILayout.SaveLayout(layout);
    }
    return PartialView("_SaveLayout", layout);
}

, и, конечно, это моя модель -

public class Layout : BaseModel
{
    [Required(ErrorMessage = "Please assign name to the compare group.")]
    public string Name { get; set; }
}

Я не могу заставить свою проверку на стороне клиента работатькогда поле имени пусто и пользователь нажимает кнопку сохранения.Может кто-нибудь подсказать, пожалуйста, что я здесь делаю не так?Любая помощь будет с благодарностью.

1 Ответ

8 голосов
/ 07 октября 2011

Как только вы обновляете DOM новым содержимым формы, проверка клиента перестает работать, потому что все обработчики событий, которые были изначально подключены, умирают. Вот сообщение в блоге , на которое вы можете взглянуть, в котором объясняется, как повторно установить проверку клиента в динамически загружаемом содержимом.

По сути, вы должны использовать метод $ .validator.unobtrusive.parse в ваших обратных вызовах успеха AJAX при обновлении DOM, чтобы повторно присоединить проверку клиента.

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