ابتدا در پروژهی mvc خود یک پوشه با نامی دلخواه (مثلا MyHelpers) بسازید و سپس کلاسی با محتویات زیر را به آن اضافه کنید(نام کلاس به دلخواه Helpers گذاشته شده است) :
public static class Helpers { //در اینجا متدها ی کمکی قرار میگیرند }
1- تبدیل تاریخ میلادی به شمسی با استفاده از کتابخانه ی Persia :
public static MvcHtmlString FarsiDate(this HtmlHelper html, DateTime dateTime) { var tag = new TagBuilder("span"); tag.MergeAttribute("dir", "ltr"); tag.AddCssClass("farsi-date"); tag.SetInnerText(Calendar.ConvertToPersian(dateTime).ToString("W")); return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); }
مثال استفاده :
@Html.FarsiDate(news.DateTimeCreated)
2- زمان فارسی :
public static MvcHtmlString FarsiTime(this HtmlHelper html, DateTime dateTime) { var tag = new TagBuilder("span"); tag.MergeAttribute("dir", "ltr"); tag.AddCssClass("farsi-time"); tag.SetInnerText(Calendar.ConvertToPersian(dateTime).ToString("R")); return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); }
مثال استفاده :
@Html.FarsiTime(news.DateTimeCreated)
3- تاریخ و زمان فارسی :
public static MvcHtmlString FarsiDateAndTime(this HtmlHelper html, DateTime dateTime) { return MvcHtmlString.Create(FarsiTime(html, dateTime).ToHtmlString() + " , " + FarsiDate(html, dateTime).ToHtmlString()); }
مثال استفاده :
@Html.FarsiDateAndTime(news.DateTimeCreated)
4- زمان گذشته :
public static MvcHtmlString FarsiRemaining(this HtmlHelper html, DateTime dateTime) { var tag = new TagBuilder("span"); tag.MergeAttribute("dir", "rtl"); tag.AddCssClass("farsi-remaining"); tag.SetInnerText(Calendar.ConvertToPersian(dateTime).ToRelativeDateString("TY")); return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal)); }
مثال استفاده :
@Html.FarsiRemaining(news.DateTimeCreated)
5- خلاصهی مطلب با استفاده از کتابخانه ی Html Agility Pack (تعداد کلمات از کلمهی اول یک متن به اندازهی max )
public static string GetSummary(this HtmlHelper html, string text, int max) { string summaryHtml = string.Empty; // load our html document var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(text); int wordCount = 0; foreach (var element in htmlDoc.DocumentNode.ChildNodes) { // inner text will strip out all html, and give us plain text string elementText = element.InnerText; // we split by space to get all the words in this element string[] elementWords = elementText.Split(new char[] { ' ' }); // and if we haven't used too many words ... if (wordCount <= max) { // add the *outer* HTML (which will have proper // html formatting for this fragment) to the summary summaryHtml += element.OuterHtml; wordCount += elementWords.Count() + 1; } else { break; } } return summaryHtml; }
مثال استفاده :
@Html.Raw(Html.GetSummary(news.Content, 60))
6- گرفتن لیست Validation Errorها در ModelState :
public static List<string> GetListOfErrors(this ModelStateDictionary modelState) { var list = modelState.ToList(); var listErrors = new List<string>(); foreach (var keyValuePair in list) { listErrors.AddRange(keyValuePair.Value.Errors.Select(error => error.ErrorMessage)); } return listErrors; }
مثال استفاده (در کنترلر):
var listErrors = ModelState.GetListOfErrors();
از دوستان عزیز خواهشمندم متدهای کمکی مورد استفاده در پروژههای خود را در قسمت نظرات قرار دهند.