Pergunta

Eu sou novo no MVC, desculpe se estou sendo um pouco grosso. Estou usando VB

Estou tentando preencher uma lista suspensa HTML usando dados de um banco de dados, mas o primeiro item é sempre selecionado, não importa o quê.

O que estou fazendo errado?

Aqui está o meu código - no controlador:

ViewData("MatchTypeList") = New SelectList(_db.GetMatchTypes.ToList(), "MatchTypeID", "MatchTypeName", SelectedValue)

E na vista

<%= Html.DropDownList("MatchType", CType(ViewData("MatchTypeList"), IEnumerable(Of SelectListItem)), "Any", New With {.class = "forminput"})%>
Foi útil?

Solução

Este é um problema com o MVC. Um trabalho seria alterar o nome da lista suspensa para qualquer coisa, menos o nome da propriedade. Então, antes de enviar para alterar o nome de volta ao nome verdadeiro da propriedade.

Um exemplo:

<script type="text/javascript">

    $(function () {
        $("form").submit(function () {
            $("select").each(
                function () {
                   $(this).attr("name", $(this).attr("name").replace(/ZZZ/, ''));
            });
        });
    });

</script>

<%= Html.DropDownList("MatchTypeZZZ", CType(ViewData("MatchTypeList"), IEnumerable(Of SelectListItem)), "Any", New With {.class = "forminput"})%>

Coloco o JavaScript (ele usa jQuery) na minha página mestre, para que qualquer formulário no aplicativo que tenha uma lista suspensa possa ter seu nome com segurança anexado ao ZZZ e depois voltar ao seu nome original no envio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top