Pass two parameters at once to the controller - A parameter is in an Input Group

Asked

Viewed 234 times

0

Good morning, everyone.

I’m new to Asp.Net and I took a personal project to do, but I’m having trouble passing parameters to the controller. I don’t know how to pass more than one parameter at a time. I have a modal to change the type of hospital bed accommodation. I need to pass to the controller the code of the bed and the code of the new type of accommodation, but I couldn’t do it at all. I’m googling here and there for brothers 4 days =/

The code of the bed is on bed.CdLeito.Tostring()

And the accommodation type code is on hm.Gettipoacomodacao(). Rows[i][0]. Tostring() and is in an input group

Obs: I tried for Get and Post, I couldn’t get any. The formaction of the save button calls the controller, but does not send the codes

Obs2: Sorry if the code is outside of the programming standards, is that I really started now in Asp.Net. I only know basic C# .

Obs3: I’m open to any suggestions for improvement in the code.

Follow the codes

HTML

@foreach (var unidade in hm.GetAllUnidInt())
{
    <!-- ESSE FOREACH LISTA TODAS AS UNIDADES DE INTERNAÇÃO -->

        foreach (var leito in hm.GetLeitosAtivos())
            {               
                <!-- ESSE FOREACH CARREGA TODOS OS LEITOS ATIVOS-->

                if (unidade.DescricaoUnidade.ToString() == leito.DsUnidInt.ToString())
                {

                    <!-- ESSE IF É PARA MOSTRAR O LEITO DA RESPECTIVA UNIDADE DE INTERNAÇÃO -->

                    if (@leito.StatusLeito.ToString() == "OCUPADO")
                    {
                        <!--DIV Leito Ocupado - transparente-->
                        <!--AQUI TEM UM CARD COM UM BUTTON QUE CHAMA O MODAL CASO A CONDIÇÃO SEJA A DO IF-->

                    }
                    else if (@leito.StatusLeito.ToString() == "VAGO")
                    {
                        <!--DIV Leito Vago - Verde-->
                        <!--AQUI TEM UM CARD COM UM BUTTON QUE CHAMA O MODAL CASO A CONDIÇÃO SEJA A DO ELSE IF-->


                    }
                    else if (@leito.StatusLeito.ToString() == "LIMPEZA")
                    {
                        <!--DIV Leito Em limpeza - Amarelo-->
                        <!--AQUI TEM UM CARD COM UM BUTTON QUE CHAMA O MODAL CASO A CONDIÇÃO SEJA A DO ELSE IF-->


                    }
                    else
                    {
                        <!--DIV Leito Interditado - Amarelo-->
                        <!--AQUI TEM UM CARD COM UM BUTTON QUE CHAMA O MODAL CASO A CONDIÇÃO SEJA A DO ELSE-->


                    }

                    <!--Modal - Alterar acomodação do leito-->
                    <form method="post">
                        <div class="modal fade" id="@string.Concat("alteraAcomodacao", leito.CdLeito.ToString())" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                            <div class="modal-dialog modal-dialog-centered" role="document">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <h5 class="modal-title" id="exampleModalLabel">Editar informações do leito</h5>
                                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                            <span aria-hidden="true">&times;</span>
                                        </button>
                                        <label id="leitoSelecionado" value="@leito.CdLeito.ToString()"></label>
                                    </div>
                                    <div class="modal-body">

                                        <p>Alterar o tipo de acomodação do leito</p>
                                        <div class="input-group mb-3">
                                            @{
                                                <select class="custom-select" id="inputGroupSelect01">
                                                    <option selected>Selecione a nova acomodação...</option>
                                                    @for (int i = 0; i < hm.GetTipoAcomodacao().Rows.Count; i++)
                                                    {
                                                        <!-- ESSE FOR É PARA POPULAR UM DROPDOWN COM OS TIPOS DE ACOMODAÇÃO PARA O USUÁRIO SELECIONAR-->

                                                        <option value="@hm.GetTipoAcomodacao().Rows[i][0].ToString()">@hm.GetTipoAcomodacao().Rows[i][1].ToString()</option>
                                                    }

                                                </select>
                                            }
                                        </div>
                                        <br />

                                    </div>
                                    <div class="modal-footer">
                                        <button type="button" class="btn btn-danger" data-dismiss="modal" id="btnCancelarAlteracoesLeito">Cancelar</button>
                                        <button type="submit" class="btn btn-success btn-submit" formaction="@Url.Action("Index","Home", new { cdLeito = @leito.CdLeito.ToString(), novaAcomodacao = @hm.GetTipoAcomodacao().Rows[i][0].ToString() })">Salvar</button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </form>




            }

}

Controller

    [HttPost]
    public ActionResult Index(string cdLeito, string novaAcomodacao)
    {
        return View();
    }
  • you can go through query string in the action url itself: /controller/Index/?cdLeito=1&novaAcomodacao=2 for example

2 answers

0

You can add an Hidden input to persist the cdLeito and its inputs need to display the attribute name for the values to be included in FormData and sent to the destination route

<input type="hidden" id="leitoSelecionado" name="cdLeito" value="@leito.CdLeito.ToString()"/>

And

<select class="custom-select" id="inputGroupSelect01" name="novaAcomodacao">

0


Face what a coincidence rsrsr

I did exactly what you said, but before I saw your reply and when I came to post here that I had succeeded, I saw your comment rsrsr

I solved the whole problem with the Get method, the code looked like this:

<!--Modal - Alterar acomodação do leito-->
<form method="get">
    <div class="modal fade" id="@string.Concat("alteraAcomodacao", leito.CdLeito.ToString())" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-dialog-centered" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title" id="exampleModalLabel">Editar informações do leito</h5>

                    <!-- INPUT HIDDEN PARA PEGAR O CÓDIGO DO LEITO-->
                    <input type="text" value="@leito.CdLeito.ToString()" hidden name="cdLeito"/>


                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">

                    <p>Alterar o tipo de acomodação do leito</p>



                    <div class="input-group mb-3">
                        @{
                            <select name="novaAcomodacao" class="custom-select">
                                <option>Selecione a nova acomodação...</option>
                                @for (int i = 0; i < hm.GetTipoAcomodacao().Rows.Count; i++)
                                {

                                    <option value="@hm.GetTipoAcomodacao().Rows[i][0].ToString()">@hm.GetTipoAcomodacao().Rows[i][1].ToString()</option>


                                }

                            </select>
                        }
                    </div>
                    <br />

                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-danger" data-dismiss="modal" id="btnCancelarAlteracoesLeito">Cancelar</button>
                    <button type="submit" class="btn btn-success btn-submit">Salvar</button>
                </div>
            </div>
        </div>
    </div>
</form>
  • I don’t think that’s the way to go. In addition to exposing all your data entry at the url, you will still be giving up several features and validations that the . Net can offer you.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.