Inquiridor
alterando width do EditorFor

Pergunta
-
Na minha view edit tenho alguns campos que queria que o editorfor tivesse um tamanho diferente e não o tamanho padrão que ele coloca para todos os campos, por exemplo campo data não precisa ter o mesmo tamanho do campo nome. Onde posso alterar isso, já tentei alterar no css na própria view e não acontece nada, conseguir fazer para o textBox-for, mais para o editorfor não consigo.
Junior
Todas as Respostas
-
Crie uma pasta chamada EditorTemplates dentro do caminho: Views/Shared
Insira uma partial view com o seguinte conteúdo:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.DateTime?>" %>
<%= Html.TextBox("", Model.HasValue ? Model.Value.ToString("dd/MM/yyyy") : "", new { @class = "datepicker textbox", style = "width:110px;" }) %>Fazendo isso sempre que você usar um EditorFor para um campo do tipo DateTime o MVC irá usar este template.
Pode ser feito o mesmo para outros tipos de dados, basta criar outras partialview com o tipo desejado e fazer o template como quiser.
-
João obrigado por me responder, mais eu sempre terei que criar uma partial view ? e a view que ele criou automaticamente qdo criei o controller eu deleto ?
Na view ele coloca assim :
@Html.EditorFor(model => model.idcli)
e nesse campo quero que o tamanho do campo sejá bem pequeno já que é o codigo, já para campo nome gostaria de um tamanho maior, essa seria a solução ? outra perguntinha pq no textboxfor ele aceita o new {@class= "bbb"} e no editofor ele não aceita ?
Junior -
João obrigado por me responder, mais eu sempre terei que criar uma partial view ? e a view que ele criou automaticamente qdo criei o controller eu deleto ?
Na view ele coloca assim :
@Html.EditorFor(model => model.idcli)
e nesse campo quero que o tamanho do campo sejá bem pequeno já que é o codigo, já para campo nome gostaria de um tamanho maior, essa seria a solução ? outra perguntinha pq no textboxfor ele aceita o new {@class= "bbb"} e no editofor ele não aceita ?
Junior
Não, deixe a view criada automaticamente pelo controller do jeito que está.Basta você criar essa nova PartialView que toda vez que usar EditorFor num campo do tipo DateTime ele vai usar o template desta nova PartialView.
Esqueci de um detalhe, o nome da PartialView tem que ser igual ao do Tipo utilizado.
Ex: DateTime.ascx para campos do tipo DateTime.
No seu caso o sua PartialView ficaria assim:
Nome: idcli.asx
Conteúdo da PartialView:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SeuModel.idcli?>" %>
<%= Html.TextBox("", Model.HasValue ? Model.Value.ToString() : "", new { @class = "textbox", style = "width:110px;" }) %> -
João não deu certo, não sei se é pq estou usando mvc 3, qdo criei a partial eu disse que ele é tipada com o meu modelo e criei como vazia e deixei assim
@model CentroDados.Models.Cliente @Html.EditorFor(model => model.idcli, new { @class = "text" , style="width:10px"})
Junior -