#1 在C#裡面,依照條件選擇要撈取或排序的欄位
public ActionResult Links(string id, string sort) { var _db = new HappyMovieEntities(); // 資料表的欄位 string colIsName; string colOnName; SortBy sortBy = (SortBy)Enum.Parse(typeof(SortBy), sort); // 字串轉成Enum switch (sortBy) { case SortBy.Viewd: colIsName = "IsViewed"; colOnName = "ViewedOn"; break; case SortBy.Like: colIsName = "IsLiked"; colOnName = "LikedOn"; break; default: goto case SortBy.Viewd; } System.Reflection.PropertyInfo propIs = typeof(UserLinkVideo).GetProperty(colIsName); System.Reflection.PropertyInfo propOn = typeof(UserLinkVideo).GetProperty(colOnName); ViewBag.DateOnCol = colOnName; // 給在View要反射欄位時使用,如果需要的話 // 撈取 + 排序 var links = _db.UserLinkVideo.Where(x => x.VideoId == id && ((bool)propIs.GetValue(x, null))).OrderByDescending(x => propOn.GetValue(x, null)); return View(links); }#2 在View裡面,依照條件取得巢狀迴圈的值
@{ // 要使用的欄位,這裡的【ModelTypeName】為傳入該View的Model型別名稱 System.Reflection.PropertyInfo prop = typeof(HappyMovie.Model.UserLinkVideo).GetProperty(ViewBag.DateOnCol); string displayText; } @foreach (var item in Model) { displayText = item.GetType().GetProperty(prop.Name).GetValue(item, null).ToString(); }
2013年8月8日 星期四
使用反射,取得要篩選排序的欄位或指定欄位的數值
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言