سؤال

هل من الممكن الاحتفاظ بصفحة ماستر الحالية الخاصة بي. واستخدمها مع عرض حلاقة ASP.NET MVC 3 جديد؟ حاولت هذا:

@{
   LayoutPage = "~/Views/Shared/Site.master";
 }

ويعطيني رسالة الخطأ هذه:

لا يمكن تقديم ملف "~/views/shared/site.master" ، لأنه غير موجود أو ليس صفحة صالحة.

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

المحلول

للاسف لا. تعد الصفحات الرئيسية جزءًا من محرك عرض ASPX WebForms ، وليس إطار عمل MVC حتى لا يتمكن Razor من التباع به.

يتمثل أحد الخيارات في تكرار الماجستير ، كما ذكرت ، ولكن بدلاً من نسخ جميع الكود ، يمكنك عوامل الصفحة الرئيسية في مجموعة من الأجزاء الجزئية ASPX التي يمكن أن تضمنها Masters ASPX. بعد ذلك ، يمكنك البدء في تحويل كل صفحة وجزئي ، واحدًا تلو الآخر ، إلى الحلاقة والتخلص في نهاية المطاف من ASPX Master.

نصائح أخرى

هناك في الواقع طريقة للقيام بذلك. سكوت هانسليم لديه منشور مدونة حول هذا الموضوع: http://www.hanselman.com/blog/mixingrazorviewsandwebformsmasterpageswithaspnetmvc3.aspx

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

أعتقد أنك بحاجة إلى البحث عن _layout.cshtml في المجلد المشترك ...

فيما يلي المقارنة بين محرك ASPX ومحرك Razor View ....

http://weblogs.asp.net/shijuvarghese/archive/2010/07/29/aspx-and-razor-view-engines-in-asp-net-mvc-3-preview-1.aspx

هذا أيضًا منشور متداخلة حول الحداثة المتداخلة مع الحلاقة ...

http://weblogs.asp.net/fredriknormen/archive/2010/08/01/asp-net-mvc-3-0-preview-1-razor-and-nested-master-pages.aspx

HTH

دعم عناصر التحكم في مستخدم .NET في MVC

لا يدعم MVC رسميًا عناصر التحكم في المستخدم .NET ولكن يمكنك استرداد HTML التي تنتجها. يسترجع الكود التالي HTML المنتج من صفحة مكونة من عشرات ملفات ASCX.

  • قم بإنشاء صفحة ASP تحتوي على عناصر تحكم مستخدم .NET في موقع MVC الخاص بك.
  • احصل على سلسلة HTML التي تنتجها عناصر تحكم المستخدم.
  • استخدم سلسلة HTML في صفحة تخطيط MVC الخاصة بك.

مثال رمز:

try{

    using (WebClient client = new WebClient())  
    {

        client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";

        myHTML = client.DownloadString("http//www.mysite.com/header.aspx");
    }

} catch ( WebException exception )

{

    using(var reader = new StreamReader(exception.Response.GetResponseStream())){

        Response.Write(reader.ReadToEnd());

    }

}

@Html.Raw(myHTML ); //OR Response.Write(myHTML);

@RenderBody(); 

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

يعمل هذا النهج عن طريق إنشاء صفحة قياسية ASPX تستخدم صفحة Master المطلوبة. يمكنك بعد ذلك إضافة أصحاب نائبة المحتوى كما هو مطلوب. ثم يمكنك استدعاء RenderPartial باسم العرض للاستخدام. ثم يتم تمرير الاستجابة من وحدة التحكم الخاصة بك إلى العرض الفعلي الذي تريد تقديمه.

هناك المزيد من السباكة المطلوبة لإنجاز هذا العمل ويجب عليك استدعاء طريقة ملحقات لتقديم عرضك في وحدة التحكم ولكن بمجرد إعدادك ، فإنه يعمل بشكل جيد للغاية.

في الحلاقة ، يمكنك تحقيق نفس الوظائف باستخدام صفحات التصميم.

صفحات التصميم/الماجستير باستخدام الحلاقة

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