/ Autofocus / html5 nie działa na asp.net mvc - asp.net-mvc

Autofocus html5 nie działa na asp.net mvc - asp.net-mvc

Mój atrybut automatycznego ustawiania ostrości nie jest renderowany w html!

To jest html zdefiniowany za pomocą brzytwy:

   <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>

To jest html z wygenerowanego serwera:

<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>

Nie widzę atrybutu automatycznego ustawiania ostrości ... Próbowałem użyć autofokusa = "autofocus" lub autofocus = ""

żaden nie działał! Czemu?

Odpowiedzi:

2 dla odpowiedzi № 1

To dlatego, że używasz EditorFor zamiast czegoś specyficznego, jak TextBoxFor.

Jeśli spojrzysz na przeciążenia dla EditorFor, nie ma żadnego przeciążenia, które akceptuje htmlAttributes. Przeciążenie, którego używasz, pobiera dodatkowo AddView.

Jeśli zmienisz to, to powinno działać (zauważ, że usunąłem środkowy parametr zerowy):

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

1 dla odpowiedzi nr 2

EditorFor renderuje szablon edytora, a przeciążenie, które zostało użyte, przekazuje anonimowy obiekt jako dodatkowy ViewData; to nie znaczy, że szablon edytora rzeczywiście coś z nim zrobi. Spróbuj TextBoxFor zamiast tego, który ma przeciążenie akceptujące dodatkowe atrybuty HTML:

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

Ewentualnie, jeśli używasz niestandardowego szablonu edytora, będziesz musiał zrobić coś z informacjami, które do niego przekazujesz, szczególnie patrząc na "autofocus" klucz w ViewData gromadzenie i renderowanie autofocus atrybut odpowiednio.