MVC Url Routing For custom url

萝らか妹 提交于 2020-01-24 12:15:07

问题


I want to pass url link like

http://localhost:24873/Jobs/[companyname]
or
http://localhost:24873/[companyname]/Jobs/ (Preferred)

I tried below routing in global aspx file and created controller named Jobs and Index action result with Jobs folder but not working.

 routes.MapRoute(
             "JobList", // Route name
             "Jobs/{companyname}",
              new
              {
                  controller = "Jobs",
                  action = "Index",
                  companyname = string.Empty
              }
          );

And my controller:

public partial class JobsController : Controller 
{ 
    public ActionResult Index() 
    { 
          JobsListModel model = new JobsListModel(); 
          return View(model); 
    } 
}

What I am doing wrong? Please help.


回答1:


You must add this route as the first entry in global.asax, otherwise the request will be routed to the default route (or route before it)

Source




回答2:


To add to the previous answer, if you want your preferred route of http://localhost:24873/[companyname]/Jobs/ to work, add this route, again before your default route.

routes.MapRoute(
  "JobList", // Route name
  "{companyname}/Jobs",
  new
  {
     controller = "Jobs",
     action = "Index",
     companyname = string.Empty
  }
);



回答3:


Your jobs controller needs an index action with a named parameter of companyname like such:

public ActionResult Index(string companyname) 
{ 
      //Do some checking on the name
      JobsListModel model = new JobsListModel(); 
      return View(model); 
}

You will probably still need the empty action as well:

public ActionResult Index() 
{ 
    return Index(string.Empty);
}

Oh, missed this. Like the guy ahead of me said to get your other url to work do this: (http://localhost:24873/[companyname]/Jobs/)

routes.MapRoute(
  "JobList", // Route name
  "{companyname}/Jobs",
  new
  {
     controller = "Jobs",
     action = "Index",
     companyname = string.Empty
  }
);



回答4:


Try this:-

//Default url

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    "Default",
    "", 
    new { controller = "Home", action = "Index", id = "" }
);

//others url rewriting you want

RouteTable.Routes.MapRoute(null, "Jobs/{companyname}", new { controller = "Jobs", action = "Index" });


来源:https://stackoverflow.com/questions/9706183/mvc-url-routing-for-custom-url

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!