проверка mvc3 на стороне сервера для формы не работает - PullRequest
1 голос
/ 10 февраля 2012

У меня есть форма в моем представлении.Поля в форме получены из модели.Я только что дал одну переменную для сокращения кода здесь.

MODEL:
public class abc
{
    [Required]
    public string name { get; set; }
}

VIEW:
<body onload="SetButton()">
@using (Html.BeginForm("myaction","mycontroller",FormMethod.POST, new {id="myform"}))
{
    @Html.TextBoxFor(m=>m.name)
    @Html.ValidationMessageFor(m=>m.name)
}
</body>
<script type="text/javascript">
function SetButton{
    document.getElementById("button").innerHTML='<input type="submit" value="Next"             style="width:90px" onclick="myform.submit()"/>';
}
</script>

Layout Page:
<div id="button"></div>

При нажатии кнопки «Далее» проверка не происходит.Форма отправляется, даже если для поля «имя» ничего не введено. Если кнопка помещена в форму (myform), проверка работает.

1 Ответ

2 голосов
/ 10 февраля 2012

Ваша кнопка отправки находится за пределами формы. Это невозможно. Кнопка отправки должна быть размещена внутри соответствующего элемента <form>. Поэтому вам нужно переместить <div id="button"></div> внутрь формы.

Если по какой-то причине div должен оставаться за пределами формы (что семантически неверно), вам нужно использовать javascript, и в этом случае вы можете использовать обычную кнопку, а не кнопку отправки.

Другим важным аспектом HTML-форм является то, что они не могут быть вложенными. Поэтому, если у вас есть другая форма в вашем макете, вы не можете иметь вложенную форму внутри своего представления. Это неверный HTML и приводит к неожиданному поведению.

Что касается проверки на стороне сервера, убедитесь, что действие контроллера, на которое вы отправляете форму, принимает модель представления в качестве аргумента действия:

[HttpPost]
public ActionResult MyAction(abc model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

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