@using MvcPluginMasterApp.IoCConfig @using MvcPluginMasterApp.PluginsBase @{ var plugins = SmObjectFactory.Container.GetAllInstances<IPlugin>().ToList(); } @foreach (var plugin in plugins) { var menuItem = plugin.GetMenuItem(this.Request.RequestContext); <li> <a href="@menuItem.Url">@menuItem.Name</a> </li> }
استفاده از افزونهی jsTree در ASP.NET MVC
- جدولی را که طراحی کردید، صرفا با JsTreeOperationData تطابق دارد.
- این جدول اصول شیءگرایی مدلهای خود ارجاع دهنده را لحاظ نکردهاست و صرفا یک ساختار سادهی دریافت اطلاعات از کاربر هست و نه بیشتر.
- اگر قرار است با این نوع جداول و کلاسهای غیر شیءگرا کار کنید، نیاز است SQL خام بنویسید و از مفاهیم CTE استفاده کنید.
نتیجه گیری؟
مدل خودتان را با مدلی که در مقالهی مدلهای خود ارجاع دهنده عنوان شده، تطبیق دهید تا بتوانید از قابلیتهای شیءگرای EF استفاده کنید.
نظرات بالاتر رو خوندید یکبار؟ خلاصهاش اینه جهت تکرار:
«ترد اجرایی یک وظیفهی پس زمینه با ترد اجرایی یک درخواست وب یکی نیست. بنابراین نمیتونید به اشیاء رابط کاربری در تردی دیگر دسترسی داشته باشید. در برنامههای دسکتاپ اگر اینکار را انجام بدید، برنامه آنی کرش میکنه. در وب هم فرقی نمیکنه؛ اصول یکی هست.»
اگر dbContext مثلا در سطح فرم ایجاد شده، اون فرم زمانیکه وظیفهی شما قراره اجرا بشه، از بین رفته. وجود خارجی نداره. کار «پس زمینه» به همین معنا هست. dbContext رو داخل وظیفه باید وهله سازی کنید.
ترد اجرایی یک وظیفهی پس زمینه با ترد اجرایی یک درخواست وب یکی نیست. بنابراین نمیتونید به اشیاء رابط کاربری در تردی دیگر دسترسی داشته باشید. در برنامههای دسکتاپ اگر اینکار را انجام بدید، برنامه آنی کرش میکنه. در وب هم فرقی نمیکنه؛ اصول یکی هست.
کاری که میخواهید انجام بدید کلا نباید از این طریق انجام بشه. اگر هدفتون مثلا پیاده سازی auto-save هست که در بعضی از سایتها دیدید که هر از چند ثانیه یکبار متن رو ذخیره میکنند، این رو با یک تایمر جاوا اسکریپتی سمت کاربر و Ajax انجام میدن و نه با یک وظیفهی پس زمینه.
بهترین روش به نظر من است ! بدلیل اینکه بسیار راحت و امن است . راه اندازی آن در حد 10 الی 15 دقیقه بیشتر طول نمیکشد و شما میتوانید تمامی مباحثی مانند احراز هویت و ... را طبق اصول MVC روی همه Actionهای مورد نیاز اعمال کنید.
اگر اغراق شده فقط یک نظر شخصی است. ;-)
- A Bug's Life | زیرساخت یا چارچوب نرمافزاری | abugslife.ir
- شیرپوینت در iPhone | pspcommunity.org
- Code First Migrations: Beta 1 Released - ADO.NET team blog - Site Home - MSDN Blogs | blogs.msdn.com
- SourceForge.net: Women in Open Source Survey | sourceforge.net
- 30 Days of Getting Results Free eBook | blogs.msdn.com
- Async CTP Support in ReSharper 6.1 | blogs.jetbrains.com
- The Fourth IE10 Platform Preview | blogs.msdn.com
- کتاب اصول برنامه نویسی به زبان فارسی | foppersian.svn.codeplex.com
یکی از روشهای متداول نام گذاری متدها در سی شارپ به این صورت است که متدهای خصوصی با حروف کوچک شروع شوند یا lower camel case و متدهای عمومی با حرف بزرگ.
ReSharper 4.5 که جزو ابزارهای واجب کاری است، گزینه Naming style را نیز اضافه کرده و اگر شما از اصول نامگذاری متدها، کلاسها ، متغیرها و غیره پیروی نکنید، علایم راهنمایی را به شما ارائه خواهد کرد. در این نگارش تمامی متدها به یک صورت در نظر گرفته میشوند: Upper camel case .
برای اصلاح آن میتوان به برگه گزینههای آن مراجعه کرده و در قسمت naming style بر روی دکمه add مربوط به user defined naming rules کلیک و تغییر زیر را اعمال نمود:
پس از اعمال آن اگر یک متد خصوصی را با حرف بزرگ شروع کنید، تصویر زیر نمایش داده خواهد شد:
ReSharper 4.5
نگارش نهایی ReSharper 4.5 ارائه شد. ارتقاء به این نگارش از نگارشهای قبلی آن رایگان است و با همان مجوز پیشین کار میکند.
- تمرکز این نگارش بر روی میزان مصرف حافظه کمتر و کارآیی بیشتر است (نسبت به نگارش قبلی آن، در آزمایشی که انجام دادم حدود 300 مگ مصرف حافظه کمتری دارد که قابل توجه است).
- سرعت باز شدن پروژههای بزرگ در آن به شدت بهبود یافته
- اضافه شدن اخطارهای در سطح پروژه. برای مثال آیا فیلد عمومی که تعریف کردهاید اصلا جایی استفاده شده است؟
- پشتیبانی از VB9 در مورد مباحث پیشرفته Refactoring .
- اضافه شدن بررسی اصول نامگذاری متدها ، کلاسها، متغیرها و غیره به صورت خودکار
توضیحاتی در مورد سیستم Identity پروژه
ببینید پروژه شما طوری طراحی شده که میشه به هر Role چندین مجوز داده بشه.
فرض کنید مجوزهای ما به این صورت هستند : مجوز A و B و C و D و E و ...
مثلا Role "مدیرارشد" دارای مجوز های A و B و C و D و E هستش
و Role "مدیر" دارای مجوزهای C و D و E
زمانی که مثلا میخوام یک کاربر ثبت نام کنم میتونم دو نقش مدیر و مدیر ارشد رو بهش بدم در صورتی که مجوزهای مشترکی بینشون هست . میخواستم بدونم دقیقا اصول این طراحی بر چه اساسه. آیا نیاز است این اجازه رو به کاربرا بدیم که به کاربرتعریف شده توسط خودشان چند Role اختصاص بدن ؟
ممنون میشم اگر یک خورده در این مورد توضیح بدید
Composition در واقع اشاره می کند به روابط بین Object ها در فضای Object-Oriented. همچنین یکی از اصول طراحی با عنوان Favor composition over inheritance در همین زمینه برای رسیدن به Polymorphic behavior و Code reuse مطرح است. مثال های لینک زیر را بررسی کنید: