asp.net MVC 4中的路由问题

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) {

我是MVC4的初学者。我有一个url。/Home/nametailspage/20,其中controller=Home、action=nametailspage和pageIndex=20。如何为此url编写路由引擎

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的简单解释。:)感谢布伦特的简单解释。:)