asp.net MVC 4中的路由问题
我是MVC4的初学者。我有一个url。/Home/nametailspage/20,其中controller=Home、action=nametailspage和pageIndex=20。如何为此url编写路由引擎asp.net MVC 4中的路由问题,asp.net,asp.net-mvc-4,asp.net-mvc-routing,Asp.net,Asp.net Mvc 4,Asp.net Mvc Routing,我是MVC4的初学者。我有一个url。/Home/nametailspage/20,其中controller=Home、action=nametailspage和pageIndex=20。如何为此url编写路由引擎 routes.MapRoute( ...... ..... ); 在控制器中,NameDetailsPage对于默认页面(如int page=2)工作得非常好:- public ActionResult NameDetailsPage(int? page) {
routes.MapRoute(
......
.....
);
在控制器中,NameDetailsPage对于默认页面(如int page=2)工作得非常好:-
public ActionResult NameDetailsPage(int? page)
{
var context = new BlogContext();
IQueryable<string> list;
list = from m in context.Blogs.OrderBy(m => m.BlogId)
select m.Name;
ViewBag.total = list.ToArray().Length;
ViewBag.page = page;
var pageNumber = page ?? 1;
ViewBag.page1 = pageNumber;
return View("NameDetails", list.Skip(pageNumber * 4).Take(4));
}
public ActionResult nametailspage(int?页)
{
var context=new BlogContext();
可查询列表;
list=来自context.Blogs.OrderBy(m=>m.BlogId)中的m
选择m.名称;
ViewBag.total=list.ToArray().Length;
ViewBag.page=页面;
变量pageNumber=第1页;
ViewBag.page1=页码;
返回视图(“NameDetails”,list.Skip(页码*4),Take(4));
}
但是不管url中的pageIndex是什么,pageNumber总是1。所以它对所有页面索引显示相同的结果。如何设置除1以外的页码。提前感谢。如果您有如下路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
);
默认对象属性(控制器、动作、id)是可以传递给动作的属性(如果动作具有与名称匹配的参数)
因此,如果你有行动:
public ActionResult NameDetailsPage(int? page)
没有作为页面
从URL传递的值
您可以将{id}
更改为{page}
,或者最好:
public ActionResult NameDetailsPage(int? id)
当你有一条像下面这样的路线
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
);
默认对象属性(控制器、动作、id)是可以传递给动作的属性(如果动作具有与名称匹配的参数)
因此,如果你有行动:
public ActionResult NameDetailsPage(int? page)
没有作为页面
从URL传递的值
您可以将{id}
更改为{page}
,或者最好:
public ActionResult NameDetailsPage(int? id)
根据你的评论,你是最成功的。您只需要定义要传递给操作的参数。在本例中,将{id}切换为{page},并更改默认值以适应
routes.MapRoute(
name: "Page",
url: "Home/NameDetailsPage/{page}",
defaults: new { controller = "Home", action = "NameDetailsPage", page = UrlParameter.Optional } );
根据你的评论,你是最成功的。您只需要定义要传递给操作的参数。在本例中,将{id}切换为{page},并更改默认值以适应
routes.MapRoute(
name: "Page",
url: "Home/NameDetailsPage/{page}",
defaults: new { controller = "Home", action = "NameDetailsPage", page = UrlParameter.Optional } );
你试过什么路线?您看到了与预期不同的内容吗?routes.MapRoute(名称:“Page”,url:“Home/nametailspage/{id}”,默认值:new{controller=“Home”,action=“nametailspage”,id=UrlParameter.Optional});你试过什么路线?您看到了与预期不同的内容吗?routes.MapRoute(名称:“Page”,url:“Home/nametailspage/{id}”,默认值:new{controller=“Home”,action=“nametailspage”,id=UrlParameter.Optional});是的,我成功了。非常感谢@erikYeah我接受了。非常感谢@erikThanks brent的简单解释。:)感谢布伦特的简单解释。:)