it-swarm-pt.tech

ASP.net MVC3 - atributo Html.TextBoxFor e autofocus

Como posso gerar o seguinte elemento input usando auxiliares de HTML padrão e o mecanismo de exibição Razor:

<input id="Foo" name="Foo" type="text" autofocus />

Posso usar o auxiliar HTML padrão ou preciso escrever o meu?

Qualquer ajuda seria muito apreciada!

24
šljaker

Você pode passar atributos HTML adicionais para o método TextBoxFor :

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

Editar:
Você pode obter apenas autofocus="" com:

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

Todos os auxiliares internos estão usando o método TagBuilder --- da classe MergeAttribute internamente, e ele suporta apenas atributos no seguinte formato: key="value".
Portanto, se você precisar apenas de autofocus, precisará escrever seu próprio auxiliar com um construtor de html personalizado.

44
nemesv

Não tenho certeza do que mais mudou para o MVC 4 em relação a esse cenário, mas acabei usando @Html.TextBoxFor(x => x.Foo, new { autofocus = true }).

7
Ju66ernaut

Acho que autofocus = "autofocus" também é válido, consulte: http://www.w3schools.com/html5/att_input_autofocus.asp para que você possa usar o argumento htmlAttributes da seguinte forma:

@Html.TextBox("Foo", null, new { autofocus = "autofocus" })

EDITAR

Eu acho que você não pode usar os auxiliares de HTML padrão se realmente quiser apenas o foco automático, teria que fazer algo assim:

@Html.Raw("<input id=\"Foo\" name=\"Foo\" type=\"text\" autofocus />")
7
kmp