public static MvcHtmlString TagLink(this HtmlHelper html, Tag tag, int max, Func<string, string> tagUrl) { int fontSize = 0; double part = (double)(tag.Count ?? 0) / max * 100; if (part >= 70) fontSize = 22; else if (part >= 60) fontSize = 20; else if (part >= 50) fontSize = 18; else if (part >= 40) fontSize = 16; else if (part >= 30) fontSize = 14; else if (part >= 25) fontSize = 13; else if (part >= 20) fontSize = 12; else if (part >= 15) fontSize = 11; else fontSize = 10; StringBuilder result = new StringBuilder(); TagBuilder span = new TagBuilder("span"); TagBuilder a = new TagBuilder("a"); a.MergeAttribute("href", tagUrl(tag.TagID.ToString())); a.MergeAttribute("style", String.Format("font-size: {0}pt", fontSize)); a.InnerHtml = tag.Title; span.InnerHtml = a.ToString(); result.Append(span.ToString()); result.Append(" "); span = new TagBuilder("span"); span.MergeAttribute("style", String.Format("font-size: {0}pt", 9)); span.InnerHtml = tag.Count.ToString(); result.Append(span.ToString()); result.Append(" "); return MvcHtmlString.Create(result.ToString()); }
private void FillTagsTable() { //Заполняем таблицу Tags (выполняется 1 раз, ну и если руками добавляли книги в Books) //************************************************** var tagsFromRequest = db.GetTagsList(); string[] tagsMerge = new string[] { }; string[] tagsTemp = new string[] { }; IEnumerable<string> tagsResult; foreach (var tag in tagsFromRequest) { tagsTemp = tag.Split(new string[] { ", " }, StringSplitOptions.None); tagsMerge = tagsMerge.Concat(tagsTemp).ToArray<string>(); } tagsResult = ( from t in tagsMerge orderby t ascending select t ).Distinct().ToList(); bool isChanged = false; foreach (var tag in tagsResult) { Tag newTag = new Tag(); newTag.Title = tag; newTag.Count = (from t in db.Books.Where(b => b.Cover2 == 0) where t.Tags.Contains(tag) select t).Count(); // Если такой тег есть, переписываем его свойство Count (только если его свойство Count изменилось - иначе ничего не делаем), // иначе добавляем в базу новый тег Tag oldTag = db.Tags.FirstOrDefault(t => t.Title == tag); if (oldTag == null) { db.Tags.AddObject(newTag); isChanged = true; } else { if (oldTag.Count != newTag.Count) { oldTag.Count = newTag.Count; isChanged = true; } } } if (isChanged) db.SaveChanges(); //************************************************** }
/// <summary> /// Deprecated Method for adding a new object to the Tags EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToTags(Tag tag) { base.AddObject("Tags", tag); }
/// <summary> /// Create a new Tag object. /// </summary> /// <param name="tagID">Initial value of the TagID property.</param> /// <param name="title">Initial value of the Title property.</param> public static Tag CreateTag(global::System.Int32 tagID, global::System.String title) { Tag tag = new Tag(); tag.TagID = tagID; tag.Title = title; return tag; }