ورود

View Full Version : حرفه ای: تزریق وابستگی در View



سعید کشاورز
سه شنبه 06 تیر 1396, 11:20 صبح
با سلام..من از روی یک مقاله Repository , unit of work رو پیاده سازی کردم
من لایه سرویس دارم که برای استفاده باید تزریق وابستگی از طریق سازنده کنترلر صورت بگیره..به شکل کد زیر


public class CategoryController : Controller {




private readonly ICategoryService _categoryService;
public CategoryController(ICategoryService _categoryService)
{
this._categoryService = _categoryService;
}


public ActionResult Index(string slug)
{
var model = _categoryService.GetOne(x => x.UrlSlug == slug);
return View(model);
}
}
حالا به راحتی از طریق سرویس Category میتونم همه کاری انجام بدم..
حالا سوالم اینه من چجوری این تزریق وابستگی رو با Razor انجام بدم؟
یعنی میخوام مستقیما از لایه سرویسم توی View استفاده کنم و اون رو New بکنم و از متد های اون استفاده کنم؟

parvizwpf
سه شنبه 06 تیر 1396, 12:06 عصر
مطالبی از این دست رو میتونید سرچ کنید:
https://lostechies.com/jimmybogard/2010/05/19/dependency-injection-in-asp-net-mvc-views/

Moien Tajik
سه شنبه 06 تیر 1396, 15:16 عصر
Best Practice این هستش که تو View شما بطور مستقیم Context و Repository رو New نکنید چون New کردن یک Context مربوط به لایه Controller هست و نه View ها : https://stackoverflow.com/a/9026165/6661314

در MVC Core این مورد به شکل خوبی پوشش داده شده و امکان این فراهم شده که شما Dependency رو بطور مستقیم به یک ویو تزریق کنید : https://docs.microsoft.com/en-us/aspnet/core/mvc/views/dependency-injection
اما تو نسخه های قبل تر MVC همچین موردی پیاده سازی نشده و بهتره همچین کاری انجام نشه .

سعید کشاورز
سه شنبه 06 تیر 1396, 20:05 عصر
مطالبی از این دست رو میتونید سرچ کنید:
https://lostechies.com/jimmybogard/2...net-mvc-views/ (https://lostechies.com/jimmybogard/2010/05/19/dependency-injection-in-asp-net-mvc-views/)
ممنون از شما

Best Practice این هستش که تو View شما بطور مستقیم Context و Repository رو New نکنید چون New کردن یک Context مربوط به لایه Controller هست و نه View ها : https://stackoverflow.com/a/9026165/6661314

در MVC Core این مورد به شکل خوبی پوشش داده شده و امکان این فراهم شده که شما Dependency رو بطور مستقیم به یک ویو تزریق کنید : https://docs.microsoft.com/en-us/aspnet/core/mvc/views/dependency-injection
اما تو نسخه های قبل تر MVC همچین موردی پیاده سازی نشده و بهتره همچین کاری انجام نشه .

ممنون معین جان..
علت این کار یه مورد خاصه
از طریق دستور زیر میشه این کار رو انجام داد داخل MVC



var obj= DependencyResolver.Current.GetService<ICategoryService>();