none
TextBox MVC RRS feed

  • Pergunta

  • Olá Pessoal,

    Estou utilizando o Textbox MVC + bootstrap em várias páginas, porém em uma está dando problema.

                                                <div class="form-group">
                                                    <label id="lblModeloVeiculo">Modelo/Veículo</label>
                                                    @Html.TextBox("ModeloVeiculo", new { @class = "form-control" })
                                                    @Html.Hidden("IdDescPadrao")
                                                </div>

    Está ficando assim:

    E em outra página está ficando corretamente, assim:

    quarta-feira, 17 de agosto de 2016 12:26

Respostas

  • Então pessoal,

    Me atentei, e o problema é não havia colocado o seguinte código em "document ready":

            $('#ModeloVeiculo').select2({
                ajax: {
                    quietMillis: 150,
                    maximumSelectionLength: 2,
                    url: "@Url.Action("GetModeloVeiculo", "Evento", new { area = "Evento" })",
                dataType: 'json',
                type: "POST",
                data: function(term) {
                    return {
                        txt: term
                    };
                },
                results: function(data) {
                    return { results: data };
                }
            },
                dropdownAutoWidth: true,
            width: '100%',
            formatSelection: function (exercise)
            {
                $("#IdDescPadrao").val(exercise.id);
                return exercise.text;
            }
            });

    O problema que ocorre agora, é que quando vou digitar algo, ao que parece ele está digitando em um textbox "atrás" e não no select2. E nas outras páginas isso funciona normalmente.

    • Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 16:40
    • Não Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 17:39
    • Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 18:51
    quarta-feira, 17 de agosto de 2016 16:40

Todas as Respostas

  • Olá,

    A implementação do seu textbox não está correta. Deixa dessa forma:

    @Html.TextBox("ModeloVeiculo", null, new { @class = "form-control" })

    Valeu!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    • Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 12:40
    • Não Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 16:40
    quarta-feira, 17 de agosto de 2016 12:33
  • Obrigado.
    quarta-feira, 17 de agosto de 2016 12:40
  • Na realidade não há a necessidade do null, existe um método sobescrito e sua colocação esta correta, o que acontece com o hazor é o seguinte se colocar o class com letra minúscula existe a necessidade de colocar o arroba antes '@class' mas se for colocado com letra maiúscula não 'Class', e se colocar o maiúscula com arroba o comando não é reconhecido, sendo assim

    você pode declarar de duas maneiras

    @Html.TextBox("ModeloVeiculo", new { @class = "form-control" })

    ou

    @Html.TextBox("ModeloVeiculo", new { Class = "form-control" })

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br

    quarta-feira, 17 de agosto de 2016 13:23
  • Sempre quando é passado o parâmetro htmlAttribute, você tem que passar um object que indica o valor (por isso o null) e sim é obrigatório. Não existe um override no MVC5 que passe apenas o nome do elemento e o htmlAttribute (tanto que ele tentou dessa forma e não conseguiu). Isso pode ser constatado ao ver a classe System.Web.Mvc.Html.ImputExtensions, conforme abaixo:

    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name);
    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, string format);
    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, object htmlAttributes);
    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, IDictionary<string, object> htmlAttributes);
    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, string format, object htmlAttributes);
    public static MvcHtmlString TextBox(this HtmlHelper htmlHelper, string name, object value, string format, IDictionary<string, object> htmlAttributes);


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 17 de agosto de 2016 14:44
  • Utilizo 2013 com MVC4 e não preciso do null, talvez no 5 isto aconteça, o único problema que tenho no MVC4 é com a colocação do @class ou  Class

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br

    quarta-feira, 17 de agosto de 2016 14:57
  • pode ser a questão da versão do MVC mesmo. O problema é quando atualizar para versão mais nova, aí o código irá quebrar, mas beleza.

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 17 de agosto de 2016 15:00
  • Então pessoal,

    Me atentei, e o problema é não havia colocado o seguinte código em "document ready":

            $('#ModeloVeiculo').select2({
                ajax: {
                    quietMillis: 150,
                    maximumSelectionLength: 2,
                    url: "@Url.Action("GetModeloVeiculo", "Evento", new { area = "Evento" })",
                dataType: 'json',
                type: "POST",
                data: function(term) {
                    return {
                        txt: term
                    };
                },
                results: function(data) {
                    return { results: data };
                }
            },
                dropdownAutoWidth: true,
            width: '100%',
            formatSelection: function (exercise)
            {
                $("#IdDescPadrao").val(exercise.id);
                return exercise.text;
            }
            });

    O problema que ocorre agora, é que quando vou digitar algo, ao que parece ele está digitando em um textbox "atrás" e não no select2. E nas outras páginas isso funciona normalmente.

    • Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 16:40
    • Não Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 17:39
    • Marcado como Resposta Yannick Freitas quarta-feira, 17 de agosto de 2016 18:51
    quarta-feira, 17 de agosto de 2016 16:40