اشتراکها
مطالب
TwitterBootstrapMVC
TwitterBootstrapMVC یا به اختصار BMVC یک کتابخانه از Helper های مفید برای ساده سازی استفاده از Twitter Bootstrap در MVC میباشد .
در این کتابخانه امکانات مختلف Bootstrap از طریق Helper های نوشته شده برای MVC براحتی قابل استفاده میباشد و فرایند کد نویسی را سادهتر و در عین حال خواناتر میکند ، Helper های موجود در این کتابخانه به صورت زنجیره ای (fluent syntax) نوشته شده که استفاده از آن را سهولت میبخشد .
برای استفاده از آن در mvc 4 کافی است بعد از پیکر بندی Bootstrap ( راهنمایی) به کتابخانه TwitterBootstrapMvc رفرنسی ایجاد کنید و با استفاده از این راهنما نحوه استفاده را فرا گیرید . همچنین میتوانید آن را از طریق NuGet بارگذاری نمایید .
نسخهی MVC4 آنرا در اینجا برای شما نیز آپلود نمودم
در زیر نمونه ای از استفاده از آن را میبینید@Html.Bootstrap().LabelFor(x => x.UserName) @Html.Bootstrap().TextBoxFor(m => m.UserName) @Html.Bootstrap().PasswordFor(m => m.Password) @Html.Bootstrap().FileFor(m => m.File) @Html.Bootstrap().CheckBoxFor(m => m.IsActivated) @Html.Bootstrap().RadioButtonFor(m => m.Gender, "male") @Html.Bootstrap().DropDownListFor(m => m.State, Model.UsaStates) @Html.Bootstrap().ListBoxFor(m => m.State, Model.UsaStates) @Html.Bootstrap().TextAreaFor(m => m.Description)
@using (Html.Bootstrap().Begin(new Form().Type(FormType.Inline))) { @Html.Bootstrap().TextBoxFor(m => m.Email).Placeholder("Email") @Html.Bootstrap().PasswordFor(m => m.Password).Placeholder("Password") @Html.Bootstrap().CheckBoxFor(m => m.RememberMe).Label() @Html.Bootstrap().SubmitButton().Text("Sign in") }
@Html.Bootstrap().Button().Text("Show Modal").IconAppend(Icons.camera) .TriggerModal("MyModal") @using(var modal = Html.Bootstrap().Begin(new Modal() .Id("MyModal") .HtmlAttributes(new { @class = "custom-class" }) .Fade() )){ using(modal.BeginHeader()) { <h2>Some header</h2> } using(modal.BeginBody()) { <p>Some body<p> } using(modal.BeginFooter()) { <p>Footer here.<p> @Html.Bootstrap().Button().Text("Close") } }
نظرات مطالب
EF Code First #12
- ویژگی absolute یعنی متد CacheBy در نگارش بعدی احتمالا حذف خواهد شد؛ نه اینکه در نگارش فعلی قابل استفاده نیست.
- مبحث تزریق وابستگیها و به روز شدهی این مطالب در دورهای به همین نام در سایت ارائه شده
- مبحث تزریق وابستگیها و به روز شدهی این مطالب در دورهای به همین نام در سایت ارائه شده
x.For<IUsersService>().HybridHttpOrThreadLocalScoped().Use<UsersService>();
نظرات مطالب
خلاصه اشتراکهای روز چهار شنبه 18 آبان 1390
این سایت ZDNet عموما شایعه پراکنی میکنه. اخبار همون ستون رو دنبال کنید عنوان کرده بود که Roslyn در نگارش بعدی ویژوال استودیو نخواهد بود؛ ولی شما شاهد ارائه نگارش بتای آن همین یکی دو هفته پیش بودید. زیاد جدی نگیرید این سایت رو. بیشتر تفریحی است.
وبلاگهای ایرانی
- گزارشی از PDC 2008 microsoftpdc.com و یک سری ویدیوی مرتبط با دات نت
Visual Studio
- ویژوال استودیو 2010 و دات نت فریم ورک 4، نگارش CTP برای دریافت!
- و تازههای آن (توسط یکی از اعضای اصلی تیم NHibernate)
- دمویی از ایجاد نمودارهای UML با VS.Net 2010 . (خوشبختانه حجم این مورد در مقایسه با دموهای PDC2008 بسیار کمتر است!)
امنیت اطلاعات
ASP. Net
- نگارش CTP2 پروژهVelocity . (این پروژه قرار است راه حل جامع caching مایکروسافت برای ASP.Net باشد)
طراحی وب
اسکیوال سرور
به روز رسانیها
- سرویس پک 3 بتا اس کیوال سرور 2005 هم ارائه شد (نگارش نهایی آن تا پایان سال جاری میلادی ارائه میشود.)
ابزارها
- مجموعه CodeRush یک نگارش express رایگان نیز ارائه داد. (به نظر من نگارش کامل آن بهترین ابزار refactoring برای VS.Net است)
سیشارپ
- ویژگیهای جدید C# 4.0 ، قسمت اول، واژه کلیدی جدیدی به نام dynamic
- ویژگیهای جدید C# 4.0 ، قسمت دوم، پارامترهای پیش فرض (یا آرگومانهای اختیاری). (چیزی شبیه به VB !! بدون نیاز به overloading برای پیاده سازی آن)
دلفی
- محصور کننده جدید SQLite برای دلفی 2009 (رفع مشکلات عدم سازگاری نگارش قبلی با سیستم یونیکد دلفی 2009)
- ویدیویی از Delphi Prism . (نگارشی از دلفی که به شکل افزونهای کاملا یکپارچه در VS.Net قابل دسترسی است)
SharePoint
- سطوح دسترسی کدها در SharePoint . (به شکل زیبایی این مساله را که مشکل اولیه اکثر وب پارت نویسها است توضیح داده است)
ویندوز
متفرقه
ارتقاء به ASP.NET Core 3.0 و
تغییرات نقطهی آغازین برنامه
ASP.NET Core 3.0 از Generic Host بجای Web Host قبلی استفاده میکند. در این حالت فایل Program.cs آن از:
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
در این حالت هاستینگ برنامه دیگر به Kestrel و یا حتی خود ASP.NET Core وابسته نخواهد بود. یعنی میتوان هاستی را ایجاد کرد که به همراه راه اندازی وب سرور Kestrel نباشد. علت این جنریک شدن چیست؟
در نگارش سوم، هاستهای دیگری هم معرفی شدهاند؛ مانند امکان اجرای یک worker service بدون راه اندازی یک وب سرور و یا Blazor از روش هاستینگ متفاوتی درون یک web assembly استفاده میکند: «ارتقاء به NET Core 3.0.: پشتیبانی از ایجاد سرویسهای پسزمینه»
در نگارش سوم، هاستهای دیگری هم معرفی شدهاند؛ مانند امکان اجرای یک worker service بدون راه اندازی یک وب سرور و یا Blazor از روش هاستینگ متفاوتی درون یک web assembly استفاده میکند: «ارتقاء به NET Core 3.0.: پشتیبانی از ایجاد سرویسهای پسزمینه»
یک نکته: جزئیات متد CreateDefaultBuilder و سرویسهایی را که به صورت خودکار اضافه میکند، در اینجا در فایل src/DefaultBuilder/src/WebHost.cs میتوانید مشاهده کنید.
بله. ولی نیازی به اینکار نیست. نگارش بعدی Blazor به همراه یک Grid توکار خواهد بود که هم اکنون هم قابل استفادهاست. به علاوه کامپوننتهای اختصاصی Blazor هم به همراه Grid نوشته شدهی با خود Blazor هستند.
اگر فرقی احساس نکردید منتظر نگارش بعدی EF باشید. این مورد رو برطرف کردن:
«significantly improved warm up time (view generation), especially for large models»
پاسخ به بازخوردهای پروژهها
مشکل با نوشتن تابع تجمعی سفارشی(از طریق پیاده سازی IAggregateFunction)
فعلا نه. در نگارش بعدی میتونید چنین کاری رو انجام بدید:
.MainTableEvents(events => { events.CellCreated(args => { if (args.CellType == CellType.PreviousPageSummaryCell || args.CellType == CellType.PageSummaryCell || args.CellType == CellType.SummaryRowCell) { if (!string.IsNullOrEmpty(args.Cell.RowData.FormattedValue)) { args.Cell.RowData.FormattedValue += " $"; } } });