none
alterando width do EditorFor RRS feed

  • 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
    quarta-feira, 29 de junho de 2011 18:19

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.

    quarta-feira, 29 de junho de 2011 18:56
    Moderador
  • 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
    quarta-feira, 29 de junho de 2011 19:13
  • 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;" }) %>

    quarta-feira, 29 de junho de 2011 19:40
    Moderador
  • 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
    quarta-feira, 29 de junho de 2011 19:56
  • Tente usar a ViewEngine do MVC2 como no meu exemplo, ela é compatível com o MVC3 e veja se resolve.
    sexta-feira, 1 de julho de 2011 17:20
    Moderador