سفارشی سازی View Engine در Asp.Net

پنجشنبه 15 مرداد 1394

در این مقاله قصد داریم نحوه سفارشی کردن یک View Engine و یا ایجاد یک View Engineدلخواه را در Asp.Net شرح دهیم.

سفارشی سازی View Engine در Asp.Net

در ادامه می بینیم که چطور فرآیند  جستجو در حین بارگیری یک صفحه وب با کاهش folds (آدرس ارجاع به view) تاحدودی برنامه کاربردی را بهینه می کند.

دلایل ضرورت استفاده از customize view engine:

وقتی که ما فراموش می کنیم که یک View page به هر متد  action در کنترلر اضافه کنیم. با خطای زیر مواجه می شویم.

نحوه  استفاده از کد

این کد بسیار ساده و راحت است. در ادامه مروری اجمالی بر آن خواهیم داشت.


گام اول:

به فایل Global.asax مراجعه کنید.

Global.asax قسمت مهم برنامه کاربردی است چون شامل متد () App_start است، که این متد آغاز گر برنامه می باشد.

protected void Application_Start()  
{  
   AreaRegistration.RegisterAllAreas();  
   WebApiConfig.Register(GlobalConfiguration.Configuration);  
   FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);  
   RouteConfig.RegisterRoutes(RouteTable.Routes);  
   BundleConfig.RegisterBundles(BundleTable.Bundles);  
   AuthConfig.RegisterAuth();  
}  

گام دوم :

کد زیر را به متد() Application_Start اضافه می کنیم.

protected void Application_Start()  
{  
   ViewEngines.Engines.Clear();//This clears all the Web form view engines.  

بعد از این مرحله، وقتی که برنامه را اجرا می کنیم با خطای زیر مواجه می شویم.

گام سوم:

سپس کد را به شکل زیر  تغییر می دهیم.

protected void Application_Start()  
{  
   ViewEngines.Engines.Clear(); //This clears all the view engines as mentioned earlier  
   ViewEngines.Engines.Add(new RazorViewEngine()); //This RazorViewEngine() is present in the System.Web.Mvc namespace  
}  

دوباره با خطای زیر مواجه می شویم .

این خطا، به این دلیل است که تنها متد () RazorViewEngine را add کردیم، که افزونه ای به نام cshtml برای  #C و vbhtml برای vb دارد. مشاهده می کنید که زمان جستجو به نصف کاهش می یابد.

گام چهارم:

View Engine دلخواه خود را ایجاد می کنیم.

در پوشه ی  App_Start یک کلاس با هر نامی که می خواهید، ایجاد کنید.

سپس کلاسی بسازید که از RazorViewEngine ارث بری می کند.

public class "your viewengine   
  
name":RazorViewEngine //This RazorViewEngine in present in the System.Web.Mvc namespace  

سپس کد زیر را به کلاس اضافه می کنیم. 

ViewLocationFormats = new[]  
{  
   "~/Views/{1}/{0}.cshtml",  
   "~/Views/Shared/{0}.cshtml"  
};  
MasterLocationFormats = new[]  
{  
   "~/Views/{1}/{0}.cshtml",  
   "~/Views/Shared/{0}.cshtml"  
};

به همین شکل  شما می توانید  این کلاس را برای  partialviews  هم add کنید.(PartialViewLocationFormats = new...)

ViewEngines.Engines.Add(new your viewengine name());

این کد با کاهش fold از 8 به 2 به کاهش زمان جستجو کمک می کند.

نتیجه 

بعد از حذف کردن موتور  Webform،سرعت موتور جستجوی  Razor View دوبرابر سرعت موتور Webform می شود.

 

 

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید