【发布时间】:2015-03-27 00:59:45
【问题描述】:
在每个包含列表的索引视图页面上,我使用 ASP.NET MVC AJAX 对列表进行排序和过滤。该列表位于部分视图中。一切看起来都很好,直到我看到带有参数的视图(参考键/FK)
我没有添加任何路由,只是使用默认路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
所以网址是http://localhost:49458/TimeKeeper/New?billingID=7。如果该格式的 url,AJAX 排序和过滤器不起作用。我尝试添加一条新路线:
routes.MapRoute(
name: "TimeKeeperNew",
url: "TimeKeeper/New/{billingID}",
defaults: new { controller = "TimeKeeper", action = "New", billingID = "" }
);
所以网址变成:http://localhost:49458/TimeKeeper/New/7。
现在,ajax 排序和过滤器正在工作。
有没有人可以解释一下,有什么问题吗?我使用了正确的方式(通过添加新路线)还是有其他方式?
【问题讨论】:
-
字面意义上的
"billingID" != "id"。 -
@ErikPhilips 我明白了,通常
{id}是主键,对吧?但billingID是Timekeeper 表的外键。我需要通过billingID显示数据。你能更深入地解释一下吗?还有其他方法还是正确的方法? -
为什么不直接将参数传递为
id- 你仍然可以过滤数据 -db.TimeKeepers.Where(x => x.BillingID == ID) -
@StephenMuecke,谢谢,它也适用于
{id}。所以{id}不仅适用于PK,也适用于FK 或任何其他领域,对吧?如果有 2 个参数,比如billingID和clientGroupID,那会怎样?我不太了解路由,您能帮我在答案中解释一下吗?
标签: ajax asp.net-mvc asp.net-mvc-routing asp.net-mvc-5.1