Usuário com melhor resposta
Problema com Views de diferentes Controllers

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
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