سؤال

كما نعلم جميعا RenderAction() هو إما جزء من:

  • Asp.net MVC 1 العقود الآجلة أو
  • Asp.net MVC 2 بيتا 2

ويسمح لنا بعرض نتيجة الإجراء داخل عرض آخر أو عرض جزئي.

وصف

  1. لديك طريقة عرض مع طرق عرض جزئية متعددة معروضة باستخدام RenderAction() المساعد.
  2. عرضان جزئيان على الأقل يعرضان أ <form> ربما باستخدام Html.BeginForm() هذا إعادة النشر إلى العرض الأصلي.
  3. إعادة النشر ليس يتم إجراؤها عبر مكالمة Ajax
  4. يتم التحقق من صحة بيانات إعادة النشر عند نموذج POST.

مشكلة

عندما يتم إعادة نشر أحد النماذج، يتم عرض النموذج الآخر كـ غير صالح.

هل استخدم أحد هذا النمط وحله؟ يجب أن نعرف بطريقة أو بأخرى أي منها form تم إعادة النشر ويجب على هذا الشخص فقط التحقق من صحة بيانات POST الخاصة به.يجب على الآخرين إما تجاهل التحقق من الصحة أو أداء العمل بشكل منتظم HttpVerb.Get معالجة العمل.

هل كانت مفيدة؟

المحلول

لديك حقل مخفي في النموذج للإشارة إلى أي واحد.أو، قم بتمرير بادئة إلى الجزء الجزئي وإلحاقها بكل عنصر في النموذج.

حول البادئات.الطريقة الأولى هي أن يكون لديك خاصيتين، استدعاء Html.RenderPartial("partial", Model.Data1/2.WithPrefix("data1")).

public class FormModel
{
   public string Prefix { get; set; }
}

public class FormData
{
   public FormModel Data1 { get; set; }
   public FormModel Data2 { get; set; }
}

public ActionResult HandlePost(FormData data)
{
   if (data.Data1 != null) {} else {}
}

الطريقة الثانية هي نفسها ولكن استخدم معلمتين للإجراء.

public ActionResult HandlePost(FormModel data1, FormModel data2)
{
   if (data1 != null) {} else {}
}

في العرض الجزئي تفعله

<%= Html.TextBox(Model.Prefix + ".FormModelField", Model.FormModelField) %>

أي أنك تقوم بتعيين اسم الحقل مع البادئة التي تم تمريرها في النموذج.

بالطبع يمكنك تغيير هذا في التفاصيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top