Я создал частичный вид в приложении MVC 3. Эта точка зрения имеет сильно типизированную модель так:ASP.NET MVC PartialView не выделяет разметку проверки
public class ProductViewModel
{
[Required, Display(Name = "Product price")]
public decimal? ProductPrice
{
get;
set;
} ...
}
В моем методе действий я вызвать метод PartialView как этого
PartialView("ProductViewModel", products[0]);
Но на странице я не могу видеть разметку для логики проверки, однако и ничего не происходит, если на странице появляются ошибки. Если я использую это частичное представление в качестве шаблона редактора, он работает. Любая помощь приветствуется.
Редактировать: Чтобы быть более конкретным, у меня есть HTML-форма, и я хочу добавить к ней разметку с помощью ajax-обновления (если пользователь нажимает на кнопку, я хочу добавить новую разметку в эту форму). Если я включаю эти элементы управления статически, я имею в виду, если я их создаю, когда страница загружается, проверка выполняется, но если я добавлю элементы управления в эту форму с помощью вызова ajax, для этих элементов управления не будет вставлена метка проверки. Мой частичный вид выглядит следующим образом:
@Html.LabelFor(x => x.ProductPrice)
@Html.TextBoxFor(x => x.ProductPrice)
@Html.ValidationMessageFor(x => x.ProductPrice)
Моя форма выглядит следующим образом:
@using (Html.BeginForm())
{
<div id="div_Products">
@Html.EditorFor(x => x)
</div>
<input type="submit" value="Compare" />
}
Код выше работает хорошо, проверка работы. На стороне сервера я вызвать метод действия, который выглядит как:
[HttpPost]
public ActionResult InsertProduct()
{
var newProductVM = new ProductViewModel{ ProductPrice = 789 };
return PartialView("~/Views/Nutrition/EditorTemplates/ProductViewModel.cshtml", newProductVM);
}
я понял, что двигатель MVC, вставляет эти проверки разметки, только если он находит, что элементы управления находятся внутри элемента формы. Когда я пытаюсь обновить свой контроль формы с помощью вызова ajax, MVC не имеет никакого способа узнать, что они будут помещены внутри элемента формы, и поэтому он не испускает для них никакой логики проверки.
Имеет смысл, что редактор «испускает» ошибки проверки и т. Д., И что нет представления. Можем ли мы увидеть код для вашего вида? – rfmodulator
Проблема заключается в том, что MVC вставляет проверку валидации только в том случае, если обнаруживает, что элементы управления находятся внутри формы. Проблема в том, что я хочу добавить разметку в элемент управления формы через ajax-обновление, но таким образом MVC-движок не знает, что эта разметка будет вставлена в элемент формы и, следовательно, не будет выпускать какую-либо разметку проверки. – Zoliqa
Вы можете заставить его использовать некоторый код Html.ValidationMessageFor(). Как я уже сказал, покажите нам свое мнение. – rfmodulator