it-swarm-pt.tech

Defina o atributo class como Html.EditorFor no modo de exibição do ASP.NET MVC Razor

Como você sabe, podemos definir atributos para actionLink ou textBox em views de navalha, mas como podemos definir atributos para @Html.EditorFor, eu sei que o EditorFor é um elemento dinâmico que pode ser definido de acordo com o tipo de modelo, mas todas as formas podem obter os atributos. Então, há alguma maneira de definir o atributo para @Html.EditorFor algo assim: new {@class = "myclass"}?

31
Saeid

O auxiliar EditorFor renderiza o modelo do editor correspondente. Pode ser o modelo padrão ou algum modelo personalizado que você escreveu. Este modelo pode conter qualquer marcação. Pode conter muitos elementos DOM. Então agora você entende que pedir uma aula para um modelo não faz sentido. Para qual elemento deste modelo você quer que essa classe seja aplicada? Por exemplo, com o auxiliar TextBoxFor, você sabe que ele gerará um único campo de entrada, portanto, faz sentido falar sobre a aplicação de uma classe CSS a ele (é exatamente isso que o argumento htmlAttributes permite que você faça).

Dito isto, existem técnicas diferentes. Por exemplo, um que eu gosto muito é escrever um provedor de metadados modelo de anotações de dados personalizados e modelos de editor personalizado, conforme descrito no após postagem no blog .

Outra possibilidade é personalizar os modelos padrão (como mostrado na postagem do blog de Brad Wilson) e aplicar diferentes atributos HTML ao campo de entrada correspondente. Vamos dar um exemplo com o template do editor string.cshtml:

@model string
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, ViewData)

E agora, quando você deseja renderizar este modelo de editor para alguma propriedade de string no seu modelo de view:

@Html.EditorFor(x => x.SomeStringProperty, new { @class = "myclass" })
45
Darin Dimitrov

Tente isto: 

@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
55
10gler

Adicione atributos personalizados como

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @data_minlength = "3", @class = "form-control input-md", @placeholder = "Name", @required = "required", @id= "txtName"} })

Substituir dados por @data_ 

Ele irá gerar html correto com dados

8
Kamran Qadir

Eu acredito que o pôster original estava correto

  • cadaEditorFor()

    cria um HTML element principal (embora possa haver outros presentes), então seria muito útil ser capaz de passar um object contendo HTML attributes para aplicar a esse HTML element principal.

  • Eu quero aplicar o atributoHTML 5'autofocus' a um campo em cada forma ,

  • mas eu não quero ter que escrever código personalizado.

  • Eu odeio o fato de que atualmente estou reduzido a usar, por exemplo, @Html.TextBoxFor() para aquele field apenas para que eu possa aplicar attributes específicos ao input element.

  • O método EditorFor() tem um parameter que eles chamam de additionalViewData, mas eu não tenho idéia do que você pode fazer com isso e procurar emMSDNnão foi de nenhuma ajuda para mim.

2
user1738579

Tente este código simples para adicionar classe a @Html.EditorFor() 

@Html.EditorFor(x => x.Demo)

<style type="text/css">

#Demo
{
   color:#fff;
   width: 50%;
}

</style>

este código funciona bem para MVC3

0
Bilal