Forum
Merhaba;
Üzerinde çalıştığım mvc ile yaptığım sitede ürünler sayfasında pagedlist yapmak istiyorum. Daha önceden listelerken SearchString ve filter uyguladım view içine birtürlü pagedlist i ekleyemedim. Aslında yaptığım filter de index.cshtml e çekince sanki pasifmiş gibi görünüyor yani rengi sarı gibi. Örneğin (@using emotorsite.Models @model IList<emotorsite.Models.Urunler> buradaki IList çok açık renkte üzerine gelincede interface olarak görünüyor. nerede hata yaptığımı çözemedim. Yardımcı olacak biri varsa çok sevinirim.
Merhabalar;
Burayı incelediniz mi,
Buradaki yönergelere göre devam ederek halen sorununuz devam ediyorsa kodunuzu paylaşırsanız yardımcı olmaya çalışalım.
pagedlist veya filter i ayrı ayrı çalıştırdığımda kısmen çalışıyor. fakat iki sorguyu birarada çalıştıramadım. Vermiş olduğunuz linki inceledim oradan da bi sonuca varamadım. Benden kaynaklı konuyu kavrayamadığımdan çözemiyorum galiba.
//productcontrol
public class ProductController : BaseContoller
{
// GET: Product public ActionResult Index(string id, DefaultFilter filter)
{ //int? SayfaNo ViewBag.Title = "Ürün Listesi"; var list = Db.Urunlers.AsQueryable(); //int _sayfaNo = SayfaNo ?? 1; //ViewBag.Tags = Db.Categories.OrderBy(d => d.OrderNumber).ToList(); // var list = Db.Urunlers.Where(d => d.Katseo.Equals(Id)); //return View(list.ToList()); if (!string.IsNullOrEmpty(id)) { list = list.Where(d => d.Katseo.Equals(id)); ViewBag.CategoryName = Db.Categories.Single(d => d.SeoText.Equals(id)).Text; //var PagesList = Db.Urunlers.OrderByDescending(m => m.SeoText).ToPagedList(_sayfaNo, 10); } list = AddFilter(filter, list); return View(list.ToList()); } public ActionResult Detail(string Id) { var Urunler = Db.Urunlers.SingleOrDefault(d => d.SeoText.Equals(Id)); if (Urunler == null) throw new Exception("ürün bulunamadı"); ViewBag.Title = Urunler.Baslik; return View(Urunler); } }
//defaultfilter
using System.Collections.Specialized;
using System.Web.Mvc;
public class DefaultFilter { public string SearchString { get; set; } public ProductColumnEnum Sort { get; set; } public SortDir SortDir { get; set; } } public static class UrlCreater { public static MvcHtmlString Create(ProductColumnEnum eColumnEnum, NameValueCollection collection) { var dir = "asc"; var tag = new TagBuilder("a"); var value = collection.Get("SortDir"); if (!string.IsNullOrEmpty(value)) { if (value == "asc") { dir = "desc"; } } tag.Attributes.Add("href", "/Product/Index" + "?Sort=" + eColumnEnum + "&SortDir=" + dir); switch (eColumnEnum) { case ProductColumnEnum.Arac: tag.SetInnerText("Araca Göre Sırala"); break; case ProductColumnEnum.Marka: tag.SetInnerText("Markaya Göre Sırala"); break; }
return new MvcHtmlString(tag.ToString()); } }
//basecontroller
public static IQueryable AddFilter(DefaultFilter filter, IQueryable list) { if (filter != null) { if (!string.IsNullOrEmpty(filter.SearchString)) { list = list.Where( d => d.Baslik.Contains(filter.SearchString) || d.Arac.Contains(filter.SearchString) || d.OEM01.Contains(filter.SearchString) || d.OEM02.Contains(filter.SearchString) || d.OEM03.Contains(filter.SearchString) || d.OEM04.Contains(filter.SearchString) || d.OEM05.Contains(filter.SearchString) || d.Aciklama.Contains(filter.SearchString)); } if (filter.SortDir == SortDir.Asc) { if (filter.Sort == ProductColumnEnum.Arac) list = list.OrderBy(d => d.Arac); if (filter.Sort == ProductColumnEnum.Marka) list = list.OrderBy(d => d.Marka); } else { if (filter.Sort == ProductColumnEnum.Arac) list = list.OrderByDescending(d => d.Arac); if (filter.Sort == ProductColumnEnum.Marka) list = list.OrderByDescending(d => d.Marka); } } return list;
//index.cshtml
@Urunler.OEM01
}
@*@Html.PagedListPager(Model, _sayfaNo => Url.Action("Index", "Product", new { SayfaNo = _sayfaNo }))*@