Ajax.BeginForm UpdateTargetId не работает с DropDownList - PullRequest
6 голосов
/ 21 октября 2009

Код:

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

Когда я запускаю страницу, я получаю правильное действие контроллера для запуска с правильными данными в коллекции форм:

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

Отлично работает с Ajax.ActionLink вот так:

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

Когда происходит сообщение, я перехожу на новую страницу, вместо того чтобы оставаться на существующей странице и обновлять содержимое div.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 22 октября 2009

submit (), вероятно, не вызывает Ajax.BeginForm, поэтому он обрабатывается как обычная запись. Вот пример: Дополнительные события jQuery, отправляющие мой Ajax.BeginForm . Или добавьте кнопку отправки (может быть скрытую) и вызовите ее .click ().

1 голос
/ 09 июня 2011

using(Ajax.BeginForm(...)) не работает, если содержит Html.RenderPartial.

0 голосов
/ 26 ноября 2009

Работает ли это с Internet Explorer 7. У меня есть некоторые проблемы с IE7 в каскадном DropDownList. Ajax.BeginForm не получает форму (Request.Form ["myIdForm"] пусто) Значение в IE7, во всех других веб-браузерах это работает (включая IE8)!

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

Я вызываю базу данных для заполнения dropDown в действии profileChanged и возвращаю частичное представление ("FilterContracts").

...