Domanda

Codice:

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

Quando eseguo la pagina ottengo l'azione del controller corretta da attivare con i dati corretti nella raccolta moduli:

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);
 }

Funziona bene da un Ajax.ActionLink in questo modo:

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

Quando il post accade, vado su una nuova pagina invece di rimanere sulla pagina esistente e aggiornare i contenuti del div.

Grazie.

È stato utile?

Soluzione

submit () probabilmente non attiva Ajax.BeginForm e quindi viene elaborato come al solito post. Vedi questo per esempio: Eventi jQuery aggiuntivi che inviano il mio Ajax.BeginForm . In alternativa, aggiungi il pulsante di invio (forse nascosto) e chiama il suo .click ().

Altri suggerimenti

Il utilizzando (Ajax.BeginForm (...)) non funziona quando contiene un Html.RenderPartial .

Funziona con Internet Explorer 7. Ho qualche problema con IE7 nel DropDownList a cascata. Ajax.BeginForm non recupera il modulo (Request.Form [" myIdForm "] è vuoto) Valore in IE7, in tutti gli altri browser web funziona (incluso IE8)!

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

Chiamo il database per popolare dropDown nell'azione profileChanged e restituisco una vista parziale (" FilterContracts ").

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top