Pregunta

Código:

<% using (Ajax.BeginForm("GetResourcesByProject", "CreateRequest", new AjaxOptions { UpdateTargetId = "ResourceListDiv"}))
{
 Response.Write(Html.DropDownList("SelectProject", Model.ProjectList, "Select Project", new { onchange = "this.form.submit();" }));
} %>

Cuando ejecuto la página, obtengo la acción correcta del controlador para disparar con los datos correctos en la colección de formularios:

public ActionResult GetResourcesByProject(FormCollection formCollection)
{
    var resourceModels = (from project in POTSModel.ProjectList
                          where project.Id == Convert.ToInt32(formCollection["SelectProject"])
                          select project).First().Resources;

    return PartialView("ResourceList", resourceModels);
 }

Funciona bien desde un Ajax.ActionLink como este:

<%= Ajax.ActionLink("Select", "GetResourcesByProject", "CreateRequest", new { projectId = item.Id }, new AjaxOptions { UpdateTargetId = "ResourceListDiv" })%>

Cuando ocurre la publicación, navego a una nueva página en lugar de quedarme en la página existente y actualizar los contenidos de la división.

Gracias.

¿Fue útil?

Solución

submit () probablemente no active Ajax.BeginForm, por lo que se procesa como es habitual. Vea esto por ejemplo: Eventos jQuery adicionales que envían mi Ajax.BeginForm . Alternativamente, agregue el botón Enviar (tal vez oculto) y llame a su .click ().

Otros consejos

El usando (Ajax.BeginForm (...)) no funciona cuando contiene un Html.RenderPartial .

¿Funciona con Internet Explorer 7. Tengo algún problema con IE7 en DropDownList en cascada? El Ajax.BeginForm no recupera el formulario (Request.Form [" myIdForm "] está en blanco) ¡Valor en IE7, en todos los demás navegadores web funciona (incluido IE8)!

            <% using (Ajax.BeginForm("profileChanged", "profiles", new AjaxOptions() { UpdateTargetId = "customer", OnComplete = "SetHiddenProfile" }, new { @class = "filtersForm" }))
          {   %>                           
        <p id="customer"> 
            <% Html.RenderPartial("FilterContracts"); %>
        </p>
        <%} %>

Llamo a la base de datos para llenar dropDown en la acción profileChanged y devolver una vista parcial (" FilterContracts ").

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top