Por que eles foram alterados por padrão ao adicionar uma nova visualização "editar"? Quais são as vantagens ao usar EditorFor()
vs. TextboxFor()
?
Eu achei isto
Por padrão, os andaimes Criar e Editar agora usam o auxiliar Html.EditorFor em vez do auxiliar Html.TextBoxFor. Isso melhora o suporte a metadados no modelo na forma de atributos de anotação de dados quando a caixa de diálogo Adicionar exibição gera uma exibição.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
fonte
fonte
Respostas:
A vantagem
EditorFor
é que seu código não está vinculado a um<input type="text"
. Então, se você decidir mudar algo para o aspecto de como suas caixas de texto são processados como envolvê-los em umdiv
você poderia simplesmente escrever um modelo de editor personalizado (~/Views/Shared/EditorTemplates/string.cshtml
) e todas as caixas de texto em seu aplicativo se beneficiarão automaticamente de esta mudança enquanto se você tiver codificadoHtml.TextBoxFor
você terá que modificá-lo em qualquer lugar. Você também pode usar as anotações de dados para controlar a maneira como isso é renderizado.fonte
TextBoxFor : Ele renderizará como o elemento html de entrada de texto correspondente à expressão especificada. Em palavras simples, ele sempre será renderizado como uma caixa de texto de entrada, independentemente do tipo de dados da propriedade que está sendo vinculada ao controle.
EditorFor : Este controle é um pouco inteligente. Renderiza a marcação HTML com base no tipo de dados da propriedade. Por exemplo, suponha que exista uma propriedade booleana no modelo. Para renderizar essa propriedade na exibição como uma caixa de seleção, podemos usar CheckBoxFor ou EditorFor. Ambos irão gerar a mesma marcação.
Qual é a vantagem de usar o EditorFor?
Como sabemos, dependendo do tipo de dados da propriedade, ela gera a marcação html. Portanto, suponha que amanhã, se alterarmos o tipo de dados da propriedade no modelo, não será necessário alterar nada na exibição. O controle EditorFor altera a marcação html automaticamente.
fonte
O
Html.TextboxFor
sempre cria uma caixa de texto (<input type="text" ...
).Enquanto o EditorFor examina o tipo e as informações meta, e pode renderizar outro controle ou modelo fornecido.
Por exemplo, para propriedades DateTime, você pode criar um modelo que use o jQuery DatePicker.
fonte
implement jquery datepicker
e usá-lo comEditorFor
é aquiEssa é uma das diferenças básicas não mencionadas nos comentários anteriores: a
Readonly
propriedade funcionará com a caixa de texto para e não funcionaráEditorFor
.O código acima funciona, onde, como a seguir, você não pode fazer o controle somente leitura .
fonte
Também há uma pequena diferença na saída html para um tipo de dados string.
fonte