Почему использование необработанного тега формы вместо использования (Html.BeginForm) нарушает проверку на стороне клиента - PullRequest
0 голосов
/ 20 декабря 2011

Я обнаружил, что после замены @using (Html.BeginForm) на обычные теги <form> прервал проверку на стороне клиента. Когда я просматривал исходный код, вывод html был таким же, за исключением изменения порядка тегов. Почему это помешало бы проверке на стороне клиента?

1 Ответ

0 голосов
/ 21 декабря 2011

Потому что, когда вы вызываете Html.BeginForm, он устанавливает переменную контекста формы, что приводит к тому, что такие помощники, как TextBoxFor, CheckBoxFor, ... испускают атрибуты data- * HTML5 при создании соответствующих им полей ввода. Попробуйте, например, использовать один из этих помощников без формы, и вы увидите, что входные данные не имеют никаких атрибутов данных data- * HTML5, которые используются при проверке на стороне клиента.

Вы можете обмануть, вручную создав контекст формы:

@{ViewContext.FormContext = new FormContext();}
<form ....>
    @Html.EditorFor(x => x.Foo)
    <button type="submit">OK</button>
</form>

Но эй, зачем вам нужно вручную жестко закодировать форму вместо использования соответствующих помощников, которые позаботятся о правильной генерации URL, методов, кодирования, ...?

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