مطالب
آشنایی با Fluent Html Helpers در MVC
همان طور که قبلا نیز اشاره شد اینجا  به صورت خلاصه هدف FluentAPI  فراهم آوردن روشی است که بتوان متدها را زنجیر وار فراخوانی کرد و به این ترتیب خوانایی کد نوشته شده را بالا برد.
اما در این مقاله سعی شده تا کاربرد آن در یک برنامه MVC رو به صورت استفاده در helper‌ها شرح دهیم.  
در اینجا مثالی رو شرح میدهیم که در آن کنترل هایی از جنس input به صورت helper ساخته و برای فرستادن ویژگی‌های اچ تی ام ال ( HTML Attributes) آن از Fluent Html Helpers بهره میگیریم بدیهی است که از این Fluent  میتوان برای helperهای دیگر هم استفاده کرد.
در ابتدا یک نگاه کلی به کد ایجاد شده می‌اندازیم :
       @Html.RenderInput(
        Attributes.Configure()
            .AddType("text")
            .AddId("UserId")
            .AddName("UserId")
            .AddCssClass("TxtBoxCssClass")
    )
که باعث ساخته شدن یک کنترل تکست باکس با مشخصات زیر در صفحه می‌شود ، همان طور که مشاهده می‌کنیم تمام ویژگی‌ها برای کنترل ساخته شده اند.
<input class="TxtBoxCssClass" id="UserId" name="UserId" type="text">
در ادامه به سراغ پیاده سازی کلاس Attributes برای این مثال می‌رویم ، این کلاس باید از کلاس RouteValueDictionary ارث بری داشته باشد، این کلاس یک دیکشنری برای ما آماده می‌کند تا مقادیرمون رو در آن بریزیم در اینجا برای ویژگی‌ها و مقادیرشون. 
public class Attributes : RouteValueDictionary    {
        /// <summary>
        /// Configures this instance.
        /// </summary>
        /// <returns></returns>
        public static Attributes Configure()
        {
            return new Attributes();
        }

        /// <summary>
        /// Adds the type.
        /// </summary>
        /// <param name="value">The value.</param>
        public Attributes AddType(string value)
        {
            this.Add("type", value);
            return this;
        }

        /// <summary>
        /// Adds the name.
        /// </summary>
        /// <param name="value">The value.</param>
        public Attributes AddName(string value)
        {
            this.Add("name", value);
            return this;
        }

        /// <summary>
        /// Adds the id.
        /// </summary>
        /// <param name="value">The value.</param>
        public Attributes AddId(string value)
        {
            this.Add("id", value);
            return this;
        }

        /// <summary>
        /// Adds the value.
        /// </summary>
        /// <param name="value">The value.</param>
        public Attributes AddValue(string value)
        {
            this.Add("value", value);
            return this;
        }

        /// <summary>
        /// Adds the CSS class.
        /// </summary>
        /// <param name="value">The value.</param>
        public Attributes AddCssClass(string value)
        {
            this.Add("class", value);
            return this;
        }
    }
متد استاتیک Configure همیشه به عنوان شروع کننده fluent  و  از اون برای ساختن یک وهله جدید از کلاس Attributes  استفاده میشه و بقیه متدها هم کار اضافه کردن مقادیر رو مثل یک دیکشنری انجام میدهند.
حالا به سراغ پیاده سازی helper extension مون میرویم 
        public static MvcHtmlString RenderInput(this HtmlHelper htmlHelper, Attributes attributes)
        {
            TagBuilder input = new TagBuilder("input");
            input.MergeAttributes(attributes);
            return new MvcHtmlString(input.ToString(TagRenderMode.SelfClosing));
        }
با استفاده از کلاس tagbuilder تگ input را ساخته و ویژگی‌های فرستاده شده به helper رو با اون ادغام می‌کنیم (با استفاده از MergeAttributes )
این یک مثال ساده بود از این کار امیدوارم مفید واقع شده باشد
مثال پروژه
پروژه‌ها
طراحی فریمورک برای کار با ASP.NET MVC و EF به صورت N-Layer

هدف اصلی بنده ساخت یک قالب  آماده بر اساس مقالاتی که تا الان در سایت جاری مطالعه کردم  و با امکان سطح دسترسی داینامیک، بود.همانطور که در مقاله مربوط به  چک لیست تهیه یک برنامه Asp.net MVC ، در نکات تکمیلی پیشنهاد شد:

" تهیه قالب‌های سفارشی VS.NET و لحاظ موارد فوق در آن جهت استفاده‌های بعدی نیز وجود دارد"


کاربر سیستمی
نام کاربری :SystemAdmin
کلمه عبور: Admin1234@gmail.com 

راه اندازی پروژه
از این مقاله کمک بگیرید و ورژن جدید را از مخزن پروژه دانلود کنید

موارد اضافه شده در ورژن آخر

  • بهبود سیستم فیلترینگ و مرتب سازی لیست کاربران
  • استفاده از  noty  به جای  toastr 
  • یکپارچه شده با Asp.net Web Api
  • یکپارچه شده با Asp.net SignalR
نظرات مطالب
نحوه ایجاد یک تصویر امنیتی (Captcha) با حروف فارسی در ASP.Net MVC
سلام. ممنون از نظر شما
چک لیست رو مطالعه کردم و عملا هم استفاده کردم.
استفاده از سشن راحت‌تر هست و به همین دلیل اون رو انتخاب کردم. نسخه بعدی این تصویر امنیتی رو با استفاده از نظرات همین مطلب ارائه می‌کنم.
نظرات مطالب
چک لیست تهیه یک برنامه ASP.NET MVC
سلام آقای نصیری
با این مطلب دیگه حجت رو بر ما تموم کردی.
واقعا ممنونم خیلی عالی بود
اگر منابع انگلیسی از نوع همین چک لیست می‌شناسید لطفا معرفی کنید؟
نظرات مطالب
سفارشی سازی ASP.NET Core Identity - قسمت پنجم - سیاست‌های دسترسی پویا
بله درست میفرمایید ولی هنوز هم لیست Claims کاربر موجود در بانک اطلاعاتی به لیست Claims کاربر وارد شده‌ی توسط اکتیو دایرکتوری اضافه نمیشه.
تنظیمات رو چک میکنم همه چیز درست است ولی...


بازخوردهای پروژه‌ها
نمونه برنامه نوشته شده با MVC
با تشکر از سری آموزشی بی نظیر MVC
بنده این سری آموزشی را کامل دنبال کرده و از آموزش روان مختصر و کاربردیتان بسیار لذت بردم.
اما خلایی که در این میان وجود دارد یک پروژه آموزشی نوشته شده با MVC که تمرکز آن بر روی رعایت الگو‌های رایج نرم افزار (مثل DI , Repository) معماری چند لایه و کد هایی ترو تمیز و refactor  شده و نحوه استفاده درست ViewModel‌ها و به طور خلاصه رعایت حداقل بخش مهم چک لیست تهیه برنامه‌های MVC  باشد
وقتی نظرات را در ذیل مطالبی مثل این  و این   می‌خونم احساس می‌کنم از نیاز به وجود همچین نمونه برنامه ای برای روشن شدن مطلب احساس می‌شود 
برای شروع هر پروژه نرم افزاری ابتدا نیاز به چهارچوب و یک سیم کشی اولیه است که بنده نیاز به یادگیری آن دارم پروژه هایی مثل این را هم دیده ام که باز هم به طور کامل نیاز من را برطرف نکرد
با تشکر