سؤال

الدعوة Html.RenderPartial("~/Views/Payments/MyControl.ascx"); من عرض يعمل إذا كان myControl.ascx هو عنصر تحكم يرث مباشرة System.Web.Mvc.ViewUserControl.

ومع ذلك ، إذا ورث السيطرة فئة جديدة مستمدة من System.Web.Mvc.ViewUserControl, ، الدعوة إلى Html.RenderPartial("~/Views/Payments/MyDerivedControl.ascx"); فشل ، الإبلاغ أنه لا يوجد مثل هذا الرأي.

مثال مشتق System.Web.Mvc.ViewUserControl:

class MyDerivedControl : System.Web.Mvc.ViewUserControl
{
    public Method()
    {
        ViewData["SomeData"] = "test";
    }
}

هل هناك حل بديل ، أم أن هناك طريقة أخرى يجب أن أفعلها؟ ربما مساعد HTML؟

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

المحلول

من وجهة نظر MVC ، ليس تصميمًا جيدًا أن تقدم عرضك بيانات. عادة ما يكون هذا مسؤولية وحدة التحكم. اعتمادًا على السياق وما تمثله هذه البيانات ، يمكنك استخدام HTML Helper أو كتابة مرشح إجراء. إليك مثال مع مرشح إجراء مخصص:

public class SomeDataActionFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        base.OnActionExecuting(filterContext);
        filterContext.Controller.ViewData["SomeData"] = "test";
    }
}

ثم تزيين عملك مع هذا المرشح:

[SomeDataActionFilter]
public ActionResult Index()
{
    return View();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top