我使用的是利用來自Twitter的Bootstrap模板的html5/Razor/MVC3。我想要表單驗證,看起來像他們已經記錄(http://twitter.github.com/bootstrap/#forms)光滑。因此,如果我們看一看如何的標準樣板MVC3帳戶登記,標記看起來像:在MVC3中擴展不顯眼的JavaScript以向div客戶端添加樣式的最佳方法
@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容器注入的「錯誤」類像我在第一個輸入中被硬編碼。 (所以進入頁面後,div會有一個「clearfix」類,但是如果該輸入塊未通過驗證,則會將其標記爲「clearfix error」)。我想我將不得不更新div塊以包含某種類型的ID,並且可能會向ValidationMessage添加新的數據屬性。我沒有擴展ValidationMessageFor幫助器的問題。我只是不能100%確定該擴展該庫的方法。有關如何解決這個問題的任何建議?
TIA。
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>
通過裝飾我的驗證消息與數據容器的名字,然後我可以瞄準div容器。現在我只需要弄清楚如何攔截驗證消息。
您是否設法解決了這個問題? –
所以@JBright,你解決了這個問題還是其中的一個回答了這個問題? – shanabus