Я использую html5 / Razor / MVC3, используя шаблон Bootstrap из Twitter. Я хочу, чтобы проверка формы выглядела так, как они документированы (http://twitter.github.com/bootstrap/#forms).). Поэтому, если мы посмотрим, как стандартная стандартная таблица MVC3 для регистрации учетной записи, разметка будет выглядеть следующим образом:
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class="form-stacked" })) {
@Html.ValidationSummary(true, "Snap! Something went wrong")
<div>
<fieldset>
<legend>Account Information</legend>
<div class="clearfix error">
@Html.LabelFor(m => m.UserName)
<div class="input">
@Html.TextBoxFor(m => m.UserName)
<span class="help-inline">@Html.ValidationMessageFor(m => m.UserName)</span>
</div>
</div>
<div class="clearfix">
@Html.LabelFor(m => m.Email)
<div class="input">
@Html.TextBoxFor(m => m.Email)
<span class="help-inline">@Html.ValidationMessageFor(m => m.Email)</span>
</div>
</div>
<div class="clearfix">
@Html.LabelFor(m => m.Password)
<div class="input">
@Html.PasswordFor(m => m.Password)
<span class="help-inline">@Html.ValidationMessageFor(m => m.Password)</span>
</div>
</div>
<div class="clearfix">
@Html.LabelFor(m => m.ConfirmPassword)
<div class="input">
@Html.PasswordFor(m => m.ConfirmPassword)
<span class="help-inline">@Html.ValidationMessageFor(m => m.ConfirmPassword)</span>
</div>
</div>
</fieldset>
<div class="actions">
<button class="btn large primary" type="submit">Register</button>
</div>
</div>
Что я хочу сделать, так это чтобы контейнер div вставлял класс «error», как я жестко запрограммировал в первом входе. (Таким образом, при входе на страницу у div будет класс «clearfix», но если этот входной блок не пройдет проверку, он будет помечен как «clearfix error»). Я полагаю, что мне придется обновить блок div, добавив в него некоторый идентификатор и, возможно, добавить новый атрибут data в ValidationMessage. У меня нет проблем с расширением помощника ValidationMessageFor. Я просто не уверен на 100%, каким должен быть подход для расширения имеющейся библиотеки. Любые предложения о том, как подойти к этому?
ТИА.
UPDATE :
Я думаю, что такой подход разумен:
<div id="UserNameContainer" class="clearfix error">
@Html.LabelFor(m => m.UserName)
<div class="input">
@Html.TextBoxFor(m => m.UserName)
<span class="help-inline">@Html.ValidationMessageFor(m => m.UserName, null, new { @data_container = "UserNameContainer" })</span>
</div>
</div>
Украсив мое сообщение для проверки именем контейнера данных, я мог бы указать таргет-контейнер. Теперь мне просто нужно выяснить, как перехватить сообщение проверки.