Ajax.BeginForm UpdateTargetId funktioniert nicht mit DropdownList
-
05-07-2019 - |
Frage
Code:
<% using (Ajax.BeginForm("GetResourcesByProject", "CreateRequest", new AjaxOptions { UpdateTargetId = "ResourceListDiv"}))
{
Response.Write(Html.DropDownList("SelectProject", Model.ProjectList, "Select Project", new { onchange = "this.form.submit();" }));
} %>
Wenn ich die Seite ausführe, erhalte ich die korrekte Controller -Aktion, um die richtigen Daten in der Formularsammlung auszulösen:
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);
}
Es funktioniert gut aus einem Ajax.ActionLink wie folgt:
<%= Ajax.ActionLink("Select", "GetResourcesByProject", "CreateRequest", new { projectId = item.Id }, new AjaxOptions { UpdateTargetId = "ResourceListDiv" })%>
Wenn der Beitrag stattfindet, navigierte ich zu einer neuen Seite, anstatt auf der vorhandenen Seite zu bleiben und den Inhalt der DIV zu aktualisieren.
Vielen Dank.
Lösung
reichen () wahrscheinlich nicht ajax.beginform auslösen und so wird es wie üblich verarbeitet. Sehen Sie dies zum Beispiel: Zusätzliche jQuery -Ereignisse, die meine Ajax.Beginform einreichen. Alternativ addieren Sie die Schaltfläche Senden (möglicherweise versteckt) und rufen Sie seine .click () an.
Andere Tipps
Das using(Ajax.BeginForm(...))
funktioniert nicht, wenn es a enthält Html.RenderPartial
.
Funktioniert es mit Internet Explorer? Die Ajax.BeginForm ärkte nicht das Formular (Request.Form ["MyIdform"] ist leer) Wert in IE7, in allen anderen Webbrowser funktioniert es (einschließlich IE8)!
<% using (Ajax.BeginForm("profileChanged", "profiles", new AjaxOptions() { UpdateTargetId = "customer", OnComplete = "SetHiddenProfile" }, new { @class = "filtersForm" }))
{ %>
<p id="customer">
<% Html.RenderPartial("FilterContracts"); %>
</p>
<%} %>
Ich rufe die Datenbank auf, um die Dropdown -Liste in der Profile -Aktion zu füllen und eine Teilansicht zurückzugeben ("Filterconcorts").