none
Problema com Views de diferentes Controllers RRS feed

  • Pergunta

  • Boa tarde,

    Tenho um projeto em MVC e estou querendo "unir" 2 views de 2 controllers diferentes, quero fazer algo parecido (ou não) com um carrinho de compras de um site.

    Vou começar postando o html que é gerado no browser (facilita o entendimento):

    <head>
       ...
    </head>
    <body>
    
    <form action="/SaleRecords/Create" method="post"><input name="__RequestVerificationToken" type="hidden" value="fTjxO_b6GYqAzp9cWFOfjDN4W7TfJWpcuFMub7J7RnaS7QRvi15xp_fS4RqhkSlE5g8rG5B33-9DpqJIjdod8Ni5HG_G41vDW_HPEqoE-lnkNxIet7os_-OavgsVGHsuf6A2d1uQzUjW6vzY0DP7_Q2" />    <div class="form-horizontal">
            <h4>SaleRecord</h4>
            <hr />
            
            <div class="form-group">
                <label class="control-label col-md-2" for="DeptId">Department</label>
                <div class="col-md-10">
                    <select class="form-control" id="DeptId" name="DeptId"><option value="">-- Select --</option>
    <option value="1">Clothing</option>
    <option value="2">Eletronics</option>
    <option value="3">Housewares</option>
    <option value="4">Technology</option>
    <option value="5">Accessories</option>
    <option value="6">Perfumary</option>
    </select>
                    <span class="field-validation-valid text-danger" data-valmsg-for="DeptId" data-valmsg-replace="true"></span>
                </div>
            </div>
    
            <div class="form-group">
                <div id="divProduct" class="col-md-offset-2 col-md-10" style="display:none">
                    <input id="btnShowProduct" type="button" value="Add Product" class="btn btn-default" />
                </div>
            </div>
     
            <div id="partialSRP" style="display:none">
                
    <!-- Aqui vem a view de outro controller -->
    
    <form action="/SaleRecordProducts/Create" method="post"><input name="__RequestVerificationToken" type="hidden" value="jH9dXrFEFMXB3SYxl9fD5BJrpElutMJpjZD4FAgukwc5-4EK3-rwDhYwpi0o-8itmU8KgfVCRpyHbAH1t1Q1Ipq6WoVXfPyqqZQwnRoI854QuxiQRNC-atfHInwSgTj2B9ZW23PWyg1abt7ats3oUQ2" />    <div class="form-horizontal">
                    
            <div class="form-group">
                <label class="control-label col-md-2" for="ProdId">Product</label>
                <div class="col-md-10">
                    <select class="form-control" id="ProdId" name="ProdId"><option value="1">Shirt</option>
    <option value="2">Headphone</option>
    <option value="3">Smartphone</option>
    <option value="4">Cell</option>
    <option value="5">Phone Bluetooth</option>
    <option value="6">Notebook</option>
    <option value="7">Desktop</option>
    </select>
                    <span class="field-validation-valid text-danger" data-valmsg-for="ProdId" data-valmsg-replace="true"></span>
                </div>
            </div>
    
    <!-- Tenho vários campos aqui também -->
    
    
    <!-- Aqui é o botão que supostamente seria usado para adicionar produtos a uma determinada venda -->
    
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input id="btnAddProduct" type="submit" value="Add to cart" class="btn btn-default" />
                </div>
            </div>
        </div>
    </form>
    
           </div>        
    
            <div class="form-group">
                <label class="control-label col-md-2" for="DeptComissionValue">Comission Value</label>
                <div class="col-md-10">
                    <input class="form-control text-box single-line" data-val="true" data-val-number="The field Comission Value must be a number." data-val-required="The Comission Value field is required." id="DeptComissionValue" name="DeptComissionValue" type="text" value="" />
                    <span class="field-validation-valid text-danger" data-valmsg-for="DeptComissionValue" data-valmsg-replace="true"></span>
                </div>
            </div>
    
    <!-- Tenho vários campos aqui também -->
    
    <!-- Aqui é o botão que supostamente seria usado para finalizar uma venda -->
    
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>
    </form>
    
    ...
    
    </body>
    </html>

    PS: Tentei resumir bastante o código, deixando só a parte "crítica" para que fique melhor a visualização.

    Problemas:

    Andei pesquisando e vi não poderia ter 2 <form> em uma view. Ainda assim a aplicação roda, o problema maior mesmo é que: o botão q era para ser usado para adicionar produtos, não adiciona simplesmente os produtos, ele interpreta como se eu tivesse finalizado a venda, ou seja, dá o submit na venda por completa, e não somente adiciona o produto a determinada venda.

    O correto seria que quando pressionado o botão "btnAddProduct" fosse na Action de SEU controller e não é isso que acontece. Acaba indo para o controller da venda.

    Espero que tenha ficado claro o problema.

    Grato desde já.





    • Editado developer033 segunda-feira, 8 de junho de 2015 19:22 Formatação
    segunda-feira, 8 de junho de 2015 19:21

Respostas

  • Bom não sei se você já esta fazendo assim, mas o ideal seria utilizar partial views.

    Para o carrinho utilize os Cookies para incluir os "produtos", e o botão "finalizar compra" você pega os "produtos" que estão gravados no Cookie e finaliza a compra.

    Espero ter ajudado.

    • Marcado como Resposta Cristopher C I_ quinta-feira, 18 de junho de 2015 19:45
    terça-feira, 9 de junho de 2015 01:11