Sto utilizzando html5/Razor/MVC3 sfruttando il modello Bootstrap da Twitter. Voglio avere la convalida del modulo che sembra chiazza di petrolio come hanno documentato (http://twitter.github.com/bootstrap/#forms). Quindi, se diamo uno sguardo a come il MVC3 caldaia-piastra standard per la registrazione dell'account, il markup sarà simile:Miglior approccio per estendere il javascript discreto in MVC3 per aggiungere uno stile a un lato client 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>
Quello che voglio fare è avere il div contenitore di iniettare la classe "errore" come I' ve hard-coded nel primo input. (Quindi, dopo aver inserito la pagina, il div avrebbe avuto una classe di "clearfix", ma se quel blocco di input avesse fallito la convalida, lo avrebbe etichettato come "clearfix error"). Immagino che dovrò aggiornare il blocco div per includere un id di qualche tipo e magari aggiungere un nuovo attributo data al ValidationMessage. Non ho problemi ad estendere l'helper ValidationMessageFor. Non sono sicuro al 100% quale dovrebbe essere l'approccio per estendere la libreria che è lì. Qualche suggerimento su come affrontarlo?
TIA.
UPDATE:
Sto pensando che questo approccio è ragionevole:
<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>
decorando il mio messaggio di convalida con un nome di dati-contenitore, ho potuto quindi indirizzare il div contenitore. Ora ho solo bisogno di capire come intercettare il messaggio di convalida.
Sei riuscito a risolvere questo? –
Quindi @JBright, hai risolto questo o hai risposto a una di queste domande? – shanabus