Проверка клиента MVC3 / Razor не запускается - PullRequest
6 голосов
/ 08 февраля 2011

Я пытаюсь заставить клиента работать в MVC3, используя аннотации данных. Я просмотрел похожие посты, в том числе MVC3 Клиентская проверка не работает для ответа.

Я использую модель данных EF. Я создал такой частичный класс для своих проверок.

[MetadataType(typeof(Post_Validation))]
public partial class Post
{

}

public class Post_Validation
{
    [Required(ErrorMessage = "Title is required")]
    [StringLength(5, ErrorMessage = "Title may not be longer than 5 characters")]
    public string Title { get; set; }

    [Required(ErrorMessage = "Text is required")]
    [DataType(DataType.MultilineText)]
    public string Text { get; set; }

    [Required(ErrorMessage = "Publish Date is required")]
    [DataType(DataType.DateTime)]
    public DateTime PublishDate { get; set; }
}

Моя cshtml страница содержит следующее.

<h2>Create</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)
    <fieldset>
        <legend>Post</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Text)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Text)
            @Html.ValidationMessageFor(model => model.Text)
        </div>
}

Web Config:

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

Компоновка:

<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

Итак, многострочная текстовая аннотация работает и создает текстовую область. Но ни одна из проверок не работает на стороне клиента. Я не знаю, чего мне не хватает. Есть идеи?? Я могу опубликовать больше информации, если это необходимо. Спасибо!

Ответы [ 2 ]

5 голосов
/ 19 февраля 2011

1). Попробуйте добавить следующее в представление, которое вы проверяете

HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;

Я не нашел нужным изменить Web.config, поэтому вы можете удалить

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

Удачи! Кроме того, попробуйте ввести известное неверное значение, чтобы увидеть, запущена ли проверка на стороне клиента, но требуемой аннотации недостаточно для отображения сообщения для пустого ввода.

2). Поставьте ниже скрипты на ваш взгляд, это должно работать.

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
0 голосов
/ 17 февраля 2011

Попробуйте объявить, используя public object :

public class Post_Validation
{
    [Required(ErrorMessage = "Title is required")]
    [StringLength(5, ErrorMessage = "Title may not be longer than 5 characters")]
    public object Title { get; set; }

    [Required(ErrorMessage = "Text is required")]
    [DataType(DataType.MultilineText)]
    public object Text { get; set; }

    [Required(ErrorMessage = "Publish Date is required")]
    [DataType(DataType.DateTime)]
    public object PublishDate { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...