Problema con form en partialView
-
2012년 3월 7일 수요일 오후 1:23
Hola.
En mi aplicación tengo un layout que tiene un llamado a un método que muestra un partialView que es formulario para votar una encuesta.
Funciona bien, pero cuando el layout se carga en una página que es contiene un form ej una pagina "Create" cuando hago click en el submit de la encuesta, en lugar de ir al metodo de la encuesta, va al metodo del create.
alguna idea?
gracias desde ya
모든 응답
-
2012년 3월 7일 수요일 오후 1:56
Hola sepilrat.
¿En la declaración del formulario le estás especificando la acción que debe ejecutar?
using (Html.BeginForm( (string)ViewData["PostBackAction"], "Candidate", ..
"En los momentos de crisis, sólo la imaginación es más importante que el conocimiento" -
2012년 3월 7일 수요일 오후 3:11
gracias por la respuesta.
Este es mi partialView:
@model Lumitech.Models.Buscador @using (Html.BeginForm("ResolverBusqueda","Buscador")) { @Html.ValidationSummary(true) <fieldset> <legend>Buscador</legend> <div class="editor-label"> @Html.LabelFor(model => model.TerminoBusqueda, Resources.Lenguajes.SearchText) </div> <div class="editor-field"> @Html.EditorFor(model => model.TerminoBusqueda) @Html.ValidationMessageFor(model => model.TerminoBusqueda) </div> <p> <input type="submit" value="Buscar" /> </p> </fieldset> }El controlador
public PartialViewResult Buscar() { return PartialView(); } [HttpPost] public ActionResult ResolverBusqueda(Buscador buscador) { var productos = from p in db.Productos where p.Nombre.Contains(buscador.TerminoBusqueda) ||p.DescripcionEspaniol.Contains(buscador.TerminoBusqueda) ||p.DescripcionIngles.Contains(buscador.TerminoBusqueda) select p; if(buscador.DisponibleStock) { productos = from p in productos where p.Stock > 0 select p; } Double PrecioDesde; if(double.TryParse(buscador.PrecioDesde.ToString(), out PrecioDesde)) { productos = from p in productos where p.PrecioUnitario > buscador.PrecioDesde select p; } Double PrecioHasta; if (double.TryParse(buscador.PrecioDesde.ToString(), out PrecioHasta)) { productos = from p in productos where p.PrecioUnitario < buscador.PrecioHasta select p; } return View(productos); } }una porción del layout don de llamo a la partialView que carga los formularios
<div id="sidebar"> <ul> <li> <h2>Buscador</h2> @{Html.RenderAction("Buscar", "Buscador");} </li> <li> </ul> @{Html.RenderAction("ClienteLogged","Cliente");} <ul> <li> <div style="clear: both;"> </div> </li> <li> < </li> <li> <h2>Encuestas</h2> @{Html.RenderAction("VotarEncuesta", "Encuesta");} </li> <li>
cuando presiono buscar, va al método Votar encuesta del encuestaControlle en lugar de ir al resolverBusqueda del buscadorController
-
2012년 3월 7일 수요일 오후 3:23Debugueando veo que en realidad primero va al método ResolverBusqueda, pero despues parsea el layput de la vista de resultados y cuando carga la encuesta, es ahí donde va al httpPost de la encuesta.
-
2012년 3월 7일 수요일 오후 3:46
Creo que el problema está en el tipo de método que usas.
Te posteo el código que tengo de un ejemplo
Controlador
public RedirectToRouteResult AddToCart(int Id, string returnUrl) { Product product = repository.Products.FirstOrDefault(p => p.Id == Id); if (product != null) GetCart().AddItem(product, 1); return RedirectToAction("Index", new { returnUrl }); }
Vista parcial
@model SportsStore.Domain.Entities.Product <div class="divProductListItem"> <div class="divCartButton"> @using(Html.BeginForm("AddToCart", "Cart")) { @Html.HiddenFor(p => p.Id) @Html.Hidden("returnUrl", Request.Url.PathAndQuery) <input type="submit" value="Add to cart" /> } </div> <div class="divProductData"> <h2>@Model.Name</h3> @Model.Description <h3>@Model.Price.ToString("c")</h4> </div> </div>
"En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"- 답변으로 표시됨 sepilrat 2012년 3월 8일 목요일 오후 1:39
-
2012년 3월 8일 목요일 오후 1:39
Gracias por la respuesta.
De esa manera lo tengo, la solución que encontré es darle un nombre diferente al metodo que rcibe el post.
GRacias por tu tiempo.
Saludos

