/ / html5 autofocus non funziona su asp.net mvc - asp.net-mvc

html5 autofocus non funziona su asp.net mvc - asp.net-mvc

Il mio attributo autofocus non è reso in html!

Questo è il codice html definito con il rasoio:

   <div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Name,null, new { autofocus=""})
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>

Questo è il codice HTML generato dal server:

<div class="form-group">
<label class="control-label col-md-2" for="Name">Name</label>
<div class="col-md-10">
<input class="text-box single-line" data-val="true" data-val-length="A test needs a title" data-val-length-max="100" data-val-length-min="1" data-val-required="A test needs a title" id="Name" name="Name" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span>
</div>
</div>

Non riesco a vedere nessun attributo autofocus ... Ho provato autofocus = "autofocus" o autofocus = ""

nessuno ha funzionato! Perché?

risposte:

2 per risposta № 1

Questo perché stai usando EditorFor invece di qualcosa di specifico come TextBoxFor.

Se si esaminano i sovraccarichi di EditorFor, non è presente alcun sovraccarico che accetti htmlAttributes. Il sovraccarico che si sta utilizzando in realtà sta prendendo additionalViewData.

Se si cambia a questo dovrebbe funzionare (notare che ho rimosso il parametro null medio):

@Html.TextBoxFor(model => model.Name, new { autofocus=""})

1 per risposta № 2

EditorFor esegue il rendering di un modello di editor e il sovraccarico che hai utilizzato passa l'oggetto anonimo come aggiuntivo ViewData; questo non significa che il modello di editor in realtà farà qualcosa con esso. Prova TextBoxFor invece, che ha un sovraccarico che accetta attributi HTML aggiuntivi:

@Html.TextBoxFor(m => m.Name, new { autofocus = "autofocus" })

In alternativa, se stai usando un modello di editor personalizzato, devi fare qualcosa con le informazioni che stai passando ad esso, in particolare, guardando in alto "autofocus" chiave nel ViewData raccolta e rendering del autofocus attributo di conseguenza.