2009-10-21 25 views
6

Code:Ajax.BeginForm UpdateTargetId không làm việc với DropDownList

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

Khi tôi chạy trang tôi nhận được hành động điều khiển chính xác để kích hoạt với đúng dữ liệu trong bộ sưu tập hình thức:

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

Nó hoạt động tốt từ một Ajax.ActionLink như thế này:

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

Khi bài viết xảy ra, tôi sẽ chuyển sang một trang mới thay thế o f ở lại trang hiện tại và cập nhật nội dung của div.

Cảm ơn.

Trả lời

5

submit() có thể không kích hoạt Ajax.BeginForm và vì vậy nó được xử lý như bài đăng thông thường. Xem ví dụ này: Additional jQuery events submitting my Ajax.BeginForm. Hoặc thêm nút gửi (có thể bị ẩn) và gọi .click().

+1

Các ẩn nút gửi hoạt động hoàn hảo: \t \t \t <% sử dụng (Ajax.BeginForm ("GetResourcesByProject", "CreateRequest", AjaxOptions mới {UpdateTargetId = "ResourceListDiv"})) \t \t \t \t { \t \t \t \t \t Response.Write (Html.DropDownList ("SelectProject", Model.ProjectList, "Chọn Project", new {onchange = "document.getElementById ('projectSubmit'). Click();"})); \t \t loại \t \t \t%> \t \t \t \t \t \t \t \t \t \t <% \t \t \t \t}% > Một chút xấu xí và thô lỗ nhưng nó hoạt động. Rất tiếc, form.submit bình thường() không trúng biểu mẫu ajax. Cảm ơn đã giúp đỡ. – Tyler

0

Tính năng này có hoạt động với trình khám phá Internet hay không 7. Tôi gặp sự cố với IE7 trong danh sách thả xuống DropDownList. Ajax.BeginForm không truy xuất biểu mẫu (Request.Form ["myIdForm"] trống) Giá trị trong IE7, trong tất cả các trình duyệt web khác hoạt động (bao gồm IE8)!

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

Tôi gọi cơ sở dữ liệu để điền vào dropDown trong hồ sơThay đổi hành động và trả về một phần xem ("FilterContracts").

1

using(Ajax.BeginForm(...)) không hoạt động khi có chứa Html.RenderPartial.

Các vấn đề liên quan