Почему мой ValidationMessageFor для TextArea отображается при загрузке страницы - PullRequest
2 голосов
/ 10 марта 2012

Когда моя страница загружает мои ValidationSummary и ValidationMessageFor (model => model.TestNumbersString), оба отображают ошибку проверки, несмотря на то, что страница загружается просто. Я проверил, что в моем файле _Layout.cshtml есть ссылка на файл .css, и для него существуют стили.

Model.cs

[Required]
public string TestNumbersString { get; set; }

HomeController.cs

public ActionResult Index(TestModel model)
{
    return View(model);
}

partialView.cshtml

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form" }))
{
    @Html.TextAreaFor(model => model.TestNumbersString, new { @class = "testBox" })
    @Html.ValidationMessageFor(model => model.TestNumbersString)
}

Мой макет, который я заметил, содержит несколько файлов javascript и css, но на странице работает другая проверка, и я знаю, что site.css загружен для других частей страницы (но не для моей формы, но это другое проблема).

_Layout.cshtml

<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>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />

Устранение неполадок, которые я до сих пор проводил, привело меня к выводу, что класс для сообщения проверки - field-validation-error. Поэтому я считаю, что это не ошибка .css (даже если стиль CSS не применяется правильно).

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

РЕДАКТИРОВАТЬ: Решение

Спасибо @jacqijvv за решение.

public ActionResult Index()
{
    TestModel model = new TestModel();
    return View(model);
}

[HttpPost]
//We have these separate as this is the design for MVC.
public ActionResult Index(TDMixParametersViewModel model)
{
    if (ModelState.IsValid)
        return View(model);
    else
    {
        model = new TDMixParametersViewModel();
        return View(model);
    }
}

Ответы [ 2 ]

6 голосов
/ 10 марта 2012

Удалить параметр из вызова метода действия

Например,

    public ActionResult Index()
    {
        TestModel model = new TestModel();
        return View(model);
    }

Это должно решить проблему

0 голосов
/ 10 марта 2012

Ваш файл CSS включен в верхней части страницы, верно?Рекомендуется поместить CSS-файлы вверху в head и javascript-файлы в конце тела

Попробуйте поместить файл site.css перед файлами JavaScript в вашем _layout.cshtml

...