@ Html.ValidationMessageFor не работает - PullRequest
4 голосов
/ 05 января 2012

Привет, ребята. Я посмотрел в Google, Yahoo, и не смог найти ответ на вопрос, почему это мой'@Html.ValidationMessageFor не работает. 'Когда я запускаю приложение, ничего не происходит, оно позволяет вводить все.И он также падает, когда я пытаюсь редактировать элемент в моем представлении редактирования, которое находится ниже.У меня есть следующее:

<div class="editor-label">
       @* @Html.LabelFor(model => model.Posted)*@
    </div>
    <div class="editor-field">
        @Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now)
        @Html.ValidationMessageFor(model => model.sendinghome)
    </div>

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

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

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

Ответы [ 2 ]

30 голосов
/ 05 января 2012

Вот как работает проверка.

Допустим, у вас есть следующая модель:

public class MyModel {
    [Required]
    public string MyProperty { get; set; }
}

Обратите внимание на атрибут Required, это аннотация данныхатрибут, который указывает, что MyProperty является обязательным полем.

MyModel используется следующим представлением ( MyView.cshtml ):

@model MyNamespace.MyModel

@using (Html.BeginForm("MyAction", "MyController")) {
    @Html.LabelFor(m => m.MyProperty)
    @Html.TextBoxFor(m => m.MyProperty)
    @Html.ValidationMessageFor(m => m.MyProperty)

    <input type="submit" value="Click me">
}

Тогда,когда эта форма будет опубликована для действия MyAction, указанного в MyController, будет выполнена проверка вашей модели.Что вам нужно сделать, это проверить, является ли ваша модель действительным или нет.Это можно сделать с помощью свойства ModelState.IsValid.

[HttpPost]
public ActionResult MyAction(MyModel model) {
    if (ModelState.IsValid) {
         // save to db, for instance
         return RedirectToAction("AnotherAction");
    }
    // model is not valid
    return View("MyView", model);
}

Если проверка не удалась, представление будет отображено снова с использованием различных ошибок, присутствующих в объекте ModelState.Эти ошибки будут использоваться и отображаться помощником ValidationMessageFor.

1 голос
/ 05 января 2012

Точно, Бертран объясняет это правильно, вы также можете использовать проверку jquery и исключить обращения к серверу, проверяющие в браузере.(asp.net mvc позаботится о автоматической проверке правил вашей модели)

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