سؤال

هل من الممكن لعرض وجهة نظر من وحدة تحكم أخرى؟

ويقول على سبيل المثال لدي CategoriesController وجهة نظر Category/NotFound.aspx. بينما في CategoriesController، أستطيع العودة ياسلي View("NotFound").

والآن أقول لدي ProductsController وعمل وعرض لإضافة منتج. ومع ذلك، يتطلب هذا الإجراء أن لدينا فئة لإضافة المنتج ل. على سبيل المثال، Products/Add/?catid=10.

إذا أنا لست قادرا على العثور على الفئة على أساس catid، أريد أن أثبت وجهة نظر NotFound من وحدة تحكم الفئات بدلا من إنشاء عرض CategoryNotFound تحت تحكم المنتجات.

هل هذا ممكن أم أنني هيكلة الأمور بطريقة خاطئة؟ هل هناك طريقة جيدة للقيام بذلك؟

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

المحلول

نعم. افتراضيا، يتحقق ASP.NET MVC أولا في \Views\[Controller_Dir]\، ولكن بعد ذلك، إذا كان لا يجد طريقة العرض، فإنه يتحقق في \Views\Shared.

والدليل المشتركة هناك على وجه التحديد لتبادل وجهات النظر عبر وحدات تحكم متعددة. فقط إضافة الملف إلى الدليل الفرعي المشتركة، وكنت على ما يرام.

إذا لم return View("~/Views/Wherever/SomeDir/MyView.aspx") يمكنك العودة أي عرض ما تريد.

نصائح أخرى

ويمكنك استخدام:

return View("../Category/NotFound", model);

وتم اختباره في ASP.NET MVC 3، ولكن يجب أيضا العمل في ASP.NET MVC 2.

ونعم من الممكن. إرجاع طريقة RedirectToAction() مثل هذا:

return RedirectToAction("ActionOrViewName", "ControllerName");

هل حاولت RedirectToAction؟

نعم، يمكنك. إرجاع عمل من هذا القبيل:

return RedirectToAction("View", "Name of Controller");

وعلى سبيل المثال:

RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees");

وهذا النهج سوف استدعاء الأسلوب GET

وأيضا هل يمكن أن يمر القيم إلى عمل مثل هذا:

RedirectToAction("Details/" + id.ToString(), "FullTimeEmployees", new {id = id.ToString(), viewtype = "extended" );

ويمكنك أيضا استدعاء أي تحكم من جافا سكريبت / <لأ href = "HTTP: / /en.wikipedia.org/wiki/JQuery "يختلط =" نوفولو noreferrer "> مسج . نقول لديك وحدة تحكم العائدين 404 أو بعض usercontrol أخرى / صفحة. بعد ذلك، في بعض الإجراءات، من رمز العميل الخاص بك، يمكنك الاتصال بعض العناوين التي سوف تطلق جهاز تحكم وإرجاع النتيجة في <لأ href = "http://en.wikipedia.org/wiki/HTML" يختلط = "noreferrer نوفولو "شكل> HTML رمز العميل الخاص بك ويمكن أن تتخذ هذه النتيجة عاد ووضعها في أي مكان تريد في صفحتك لك ...

مع هذا الرمز يمكنك الحصول على أية وحدة تحكم:

var controller = DependencyResolver.Current.GetService<ControllerB>();
controller.ControllerContext = new ControllerContext(this.Request.RequestContext, 
controller);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top