Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não estou recebendo valores da view

Olá pessoal, Estou tentando passar valores da view para um controller, onde tenho alguns checkbox que se estiverem como checked é pq o cliente possui os produtos, estou tentando passar como um array de bool, mas pra receber no controller ele não vem preechido com os valores true ou false, segue partes do codigo para entendimento:

parte da view:

<!-- Produto 1-->
<div class="setings-item col-xs-12">
    <div class="col-xs-10">
        <label for="control">
            Control
        </label>
    </div>
    <div class="switch col-xs-2">
        <div class="onoffswitch">
            <input checked type="checkbox" name="produtos[0]" class="onoffswitch-checkbox" id="control" >
            <label class="onoffswitch-label" for="control">
                <span class="onoffswitch-inner"></span>
                <span class="onoffswitch-switch"></span>
            </label>
        </div>
    </div>
</div>
<!-- Produto 2-->
<div class="setings-item col-xs-12">
    <div class="col-xs-10">
        <label for="recupera">
            Recupera
        </label>
    </div>
    <div class="switch col-xs-2">
        <div class="onoffswitch">
            <input type="checkbox" name="produtos[1]" class="onoffswitch-checkbox" id="recupera">
            <label class="onoffswitch-label" for="recupera">
                <span class="onoffswitch-inner"></span>
                <span class="onoffswitch-switch"></span>
            </label>
        </div>
    </div>
</div>

controller:

public ActionResult EditarOpcoesAvancadas(bool[] produtos)

se eu deixo só o primeiro como checked o resultado é:

produtos[0] é false

se tiro o checked do primeiro e só no segundo o resultado é:

produtos[] é nulll

4 respostas

Olá, Lucas

Recomendo substituir os <input> de checkbox por:

@Html.CheckBoxFor(m => m.NomeDaPropriedadeBoolean, new { @checked = "checked", @class="onoffswitch-checkbox", @id="control"});

e:

@Html.CheckBoxFor(m => m.NomeDaPropriedadeBoolean, new { @checked = "checked", @class="onoffswitch-checkbox", @id="recupera"});

Veja se assim resolve

Oi Marcelo, Alterei aqui mas mesmo assim não funcionou, uma que o layout ficou diferente pq o pessoal do front me passou assim e ele ficou com uma cara estranha não funcionando certo, e outra que mesmo assim dando o post no controller está chegando como null, muito estranho

Uma boa pedida seria fazer conforme o Marcelo falou. Mas, como não está legal pra você, poderia tentar dessa forma

<input type="checkbox" name="produtos" id="control"  />
<input type="checkbox" name="produtos" id="recupera"  />

E no controller

EditarOpcoesAvancadas(bool[] produtos)
solução!

Olá pessoal, obrigado pela ajuda, para receber corretamente da view esses dados, precisei fazer função js que ao clicar no input, ele colocaria true ou false de acordo com o checked, ai sim veio preenchido como true ou false, estranho mas assim funcionou...