۱۱ سال و ۵ ماه قبل، دوشنبه ۳۰ اردیبهشت ۱۳۹۲، ساعت ۰۴:۵۱
۱۱ سال و ۵ ماه قبل، دوشنبه ۳۰ اردیبهشت ۱۳۹۲، ساعت ۰۳:۱۳
یک نکته: روش دیگر ساخت قالب، استفاده از برنامه Templify است.
۱۱ سال و ۵ ماه قبل، دوشنبه ۳۰ اردیبهشت ۱۳۹۲، ساعت ۰۰:۳۴
امکان سفارشی سازی قالب ساز با کدنویسی هم میسر است. نیاز است اینترفیس IWizard پیاده سازی شود. در اینجا هر نوع کدی رو که لازم بود میشود در متد ProjectFinishedGenerating آن تدارک دید. مثلا پوشه درست کند، تنظیمات پروژه را تغییر دهد و امثال آن.
- یک مثال از پیاده سازی اینترفیس IWizard:
Creating custom project template with wizard for Visual Studio
- مثلا پروژه sharp-architecture از همین روش استفاده میکنه.
- یک مثال از پیاده سازی اینترفیس IWizard:
Creating custom project template with wizard for Visual Studio
- مثلا پروژه sharp-architecture از همین روش استفاده میکنه.
۱۱ سال و ۵ ماه قبل، یکشنبه ۲۹ اردیبهشت ۱۳۹۲، ساعت ۲۲:۳۱
فایل extension.vsixmanifest افزونه رو باید ویرایش کنید (فایل vsix در اصل یک فایل zip است). مثلا VisualStudio Version آن الان 10 است که باید بشود 11. بعد در SupportedFrameworkRuntimeEdition آن باید MaxVersion به 4.5 تنظیم شود.
۱۱ سال و ۵ ماه قبل، یکشنبه ۲۹ اردیبهشت ۱۳۹۲، ساعت ۲۲:۱۷
حالت پیش فرض همین هست. اگر مطابق سلیقه شما نیست، میشود اون رو سفارشی کرد:
و بعد در Application_Start برنامه به ازای هر ویژگی مورد نظر یکبار باید معرفی و ثبت شود:
public class GlobalResourceTypeResourceDataAnnotationsModelValidator : DataAnnotationsModelValidator<ValidationAttribute> { public GlobalResourceTypeResourceDataAnnotationsModelValidator( ModelMetadata metadata, ControllerContext context, ValidationAttribute attribute ) : base(metadata, context, attribute) { if (Attribute.ErrorMessageResourceType == null) { Attribute.ErrorMessageResourceType = typeof(ModelValidationMessages); } } }
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(RequiredAttribute), typeof(GlobalResourceTypeResourceDataAnnotationsModelValidator)); DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(StringLengthAttribute), typeof(GlobalResourceTypeResourceDataAnnotationsModelValidator));
۱۱ سال و ۵ ماه قبل، یکشنبه ۲۹ اردیبهشت ۱۳۹۲، ساعت ۱۷:۴۰
- ممنون. افزونه خیلی کاربردی و مفیدی است.
- البته در حالت دستی عنوان شده امکان تعریف آیکون و غیره هم هست. در متن، لینک داده شده به مراجع تولید فایلهای vstemplate و vscontent که برای نمونه یک مدخل اضافهتر برای آیکون پیدا میکند:
در کل بد نیست یک برنامه نویس بدونه پشت صحنه این اعمال به چه صورتی هست.
- البته در حالت دستی عنوان شده امکان تعریف آیکون و غیره هم هست. در متن، لینک داده شده به مراجع تولید فایلهای vstemplate و vscontent که برای نمونه یک مدخل اضافهتر برای آیکون پیدا میکند:
<Icon>__Template_small.png</Icon>
۱۱ سال و ۵ ماه قبل، یکشنبه ۲۹ اردیبهشت ۱۳۹۲، ساعت ۱۵:۵۹
حداقل دو علت میتونه داشته باشه:
الف) تصاویر رو نمیتونه پیدا کنه، یا صفحه کش شده بیش از حد. قسمت «اجرای کدهای jQuery Ajax فوق، چه تغییری را در صفحه سبب میشوند؟» را بررسی کنید که چه آدرسی توسط کدهای جیکوئری در حال پردازش است.
همچنین کش شدن نتایج قبلی رو هم میشود غیرفعال کرد:
ب) چند وقت قبل در یکی از بحثهای سایت دیدم که مورد زیر رعایت نشده بود و کدهای جیکوئری کار نمیکردند:
اجرای کدهای جیکوئری نیازی به DOM حاضر و آماده دارند که توسط متد document ready آن مانند کدهای فوق باید تدارک دیده شود. نیازی به این کد نخواهد بود اگر اسکریپتها در آخر صفحه و پیش از بسته شدن تگ body اضافه بشن.
الف) تصاویر رو نمیتونه پیدا کنه، یا صفحه کش شده بیش از حد. قسمت «اجرای کدهای jQuery Ajax فوق، چه تغییری را در صفحه سبب میشوند؟» را بررسی کنید که چه آدرسی توسط کدهای جیکوئری در حال پردازش است.
همچنین کش شدن نتایج قبلی رو هم میشود غیرفعال کرد:
$.ajax({ cache: false /* گاهی از اوقات خصوصا برای آی ایی نیاز است */ });
<script type="text/javascript"> $(function () { // کدهای جیکوئری در اینجا }); </script>
۱۱ سال و ۵ ماه قبل، شنبه ۲۸ اردیبهشت ۱۳۹۲، ساعت ۱۵:۲۹
ViewModel متناظر است با اشیاء یک View که الزاما تطابق یک به یکی با Domain Model و موجودیتهای بانک اطلاعاتی ندارند. مثلا یک صفحه تعویض پسورد هست و فقط یک فیلد پسورد داره. اینجا در معرض دید قرار دادن کل موجودیت کاربر در یک برنامه وب MVC اشتباه است چون به سادگی مورد حمله واقع خواهد شد. خلاصه هر دو مورد ViewModel و Domain model نیاز به اعتبارسنجی دارند؛ به هر روشی که صلاح میدونید.
نهایتا اطلاعات ViewModel در حالت Post، به اطلاعات Model انتساب داده میشه. یا دستی و یا مثلا توسط AutoMapper ؛ در این حالت هم هر طور که راحت هستید عمل کنید. قانون یا روش بهتری برای این نوع انتسابها وجود نداره.
نهایتا اطلاعات ViewModel در حالت Post، به اطلاعات Model انتساب داده میشه. یا دستی و یا مثلا توسط AutoMapper ؛ در این حالت هم هر طور که راحت هستید عمل کنید. قانون یا روش بهتری برای این نوع انتسابها وجود نداره.
۱۱ سال و ۵ ماه قبل، شنبه ۲۸ اردیبهشت ۱۳۹۲، ساعت ۱۳:۴۸
نیاز است با یک سری پیشنیاز مانند ViewModel و همچنین «مقابله با مشکل امنیتی Mass Assignment در حین کار با Model binders» آشنا باشید تا علت جدا سازی این موارد از هم مشخص بشه.
۱۱ سال و ۵ ماه قبل، شنبه ۲۸ اردیبهشت ۱۳۹۲، ساعت ۱۳:۳۰
نیازی به این پیچ و تابها در EF Code first نیست. تابع استاندارد Find ایی که در آن اضافه شده همین کار ابتدا مراجعه به کش و بعد مراجعه به دیتابیس رو انجام میده.