Проверять только загруженный ajax частичный вид
У меня есть форма с некоторыми элементами управления. На форме есть кнопка, которая загружает частичное представление. В частичном представлении есть два обязательных текстовых поля и кнопка. И когда его щелкнули, мне нужно отображать сообщения об ошибках только для текстовых полей, которые находятся внутри частичного представления, но не для полей в реальной форме. И когда я нажимаю кнопку отправки формы, все сообщения об ошибках должны отображаться.
После частичной загрузки я заново инициализирую плагин валидации, как показано ниже.
$('#test').removeData("validator");
$.validator.unobtrusive.parse('#test');
Я попытался использовать атрибут проверки, описанный в теме ниже, но он не работает. Может быть, это работает для нормально загруженных просмотров.
Тем не менее, я могу проверить индивидуально, вызывая textbox1.valid() и textbox2.valid(). Но я думаю, что мне не хватает стандартного способа сделать это. Любая помощь приветствуется.
1 ответ
Вы можете сделать это, отправив частичное представление с помощью Ajax.BeginForm ()
//In Partail View
@model SomeModel
@using (Ajax.BeginForm ("SomeActionName", новые AjaxOptions { HttpMethod = "POST", UpdateTargetId = "targetId"}))) {
@Html.EditorFor(mode=>model.FirstText)
@Html.EditorFor(mode=>model.SecText)
<input type="submit" value="save">
}
//In Controller
public ActionResult SomeAction(SomeModel model)
{
return PartaiulView(model);
}
здесь вы можете проверить частичное представление. ПРИМЕЧАНИЕ: когда вы отправляете форму, используя Ajax.BeginForm, вы должны указать " UpdateTargetId ", где ваш результат будет отображаться в представлении.
//In View
<div id="targetId">
@Html.Partail("PartialView")
</div>
ИЛИ если вы хотите Перенаправить на другое действие, если ваша модель действительна, то измените свое действие
public ActionResult SomeAction(SomeModel model)
{
if(ModelState.IsValid)
{
return Json(new {redirect = @Url.Action("SomeAction","SomeController")})
}
return PartaiulView(model);
}
затем в режиме просмотра паролей вы можете вызвать метод OnSuccess Ajax.BeginForm
@using (Ajax.BeginForm("SomeActionName", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "targetId",OnSuccess="success"}))
{
}
<script type="text/javascript">
function success(data)
{
if(data.redirect)
{
windows.location = data;
}
}
</script>
проверьте оба способа, какой вам подходит.