【发布时间】:2019-08-03 05:24:49
【问题描述】:
您好,我想使用 viewbag 按 selectedId 类别对索引页进行排序。 我已经在使用 linq 并实现搜索按钮是有效的,但过滤类别不起作用。
控制器上的这个索引方法
public ActionResult Index(string Search, int Ca ) { //var c = User.Identity.GetUserId(); string c = System.Web.HttpContext.Current.User.Identity.GetUserId(); //int e = int.Parse(Request.Form["Ca"].ToString()); var test = (from s in db.Articles where (s.UserId == c) where (s.titre.Contains(Search)) where (s.Idc == int.Parse (Request["Ca"].ToString())) select s ).Distinct().ToList(); ViewBag.Ca = new SelectList(db.Categories, "Id", "libelle"); return View(test.ToList()); }
谢谢
【问题讨论】:
-
你真的不应该使用
ViewBag,因为数据是动态的,直到运行时才指定。使调试成为真正的噩梦,您最好实例化一个模型或将其与 MVVM 方法中的另一个模型结合起来。我的两分钱,你也可以简单地使用.OrderBy(category => category.Id)来订购列表。 -
我想用 jquery 做到这一点,但我不知道如何实现,谢谢
-
如果你想先用 javascript 来做,你必须在你的视图中将变量保存在一个 javascript 数组中,就像这样
-
另外,如果您使用 JavaScript,请记住,在 DOM 准备好之前,您将无法为下拉列表添加和排序内容,具体取决于您拥有多少内容。因此,如果其他变量发挥作用,您可能会遇到古怪的用户体验行为,您必须解决这些问题。
-
一种解决方案是使用
JsonResult作为返回类型的控制器。这样,您可以让服务器返回模型,然后您可以在服务器上抢先订购或一旦您承诺返回。然后将转储添加到输入中,因为您将准备就绪并通过 Ajax 将异步返回到服务器。不熟悉架构,只是一个建议。
标签: c# asp.net-mvc entity-framework filter