ajax.beginform updateTargetId لا يعمل مع DropDownList
-
05-07-2019 - |
سؤال
شفرة:
<% 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.
شكرًا.
المحلول
إرسال () ربما لا تؤدي إلى تشغيل ajax.beginform ، وبالتالي تتم معالجتها كمشاركة معتادة. انظر هذا على سبيل المثال: أحداث jQuery إضافية تقدم الخاص بي ajax.beginform. بدلاً من ذلك ، أضف زر إرسال (ربما مخفي) واتصل بـ .click ().
نصائح أخرى
ال using(Ajax.BeginForm(...))
لا يعمل عندما يحتوي على ملف Html.RenderPartial
.
هل يعمل مع 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>
<%} %>
أدعو قاعدة البيانات لإلغاء القائمة المنسدلة في الإجراءات البروفيرة وإعادة طريقة عرض جزئية ("FilterContracts").