我想传递像
这样的网址链接http://localhost:24873/Jobs/[companyname]
or
http://localhost:24873/[companyname]/Jobs/ (Preferred)
我尝试在全局aspx文件中进行下面的路由,并使用Jobs文件夹创建名为Jobs和Index操作结果的控制器但不起作用。
routes.MapRoute(
"JobList", // Route name
"Jobs/{companyname}",
new
{
controller = "Jobs",
action = "Index",
companyname = string.Empty
}
);
我的控制员:
public partial class JobsController : Controller
{
public ActionResult Index()
{
JobsListModel model = new JobsListModel();
return View(model);
}
}
我做错了什么?请帮忙。
答案 0 :(得分:4)
要添加到上一个答案,如果您希望首选路由http://localhost:24873/[companyname]/Jobs/
正常工作,请在默认路由之前再次添加此路由。
routes.MapRoute(
"JobList", // Route name
"{companyname}/Jobs",
new
{
controller = "Jobs",
action = "Index",
companyname = string.Empty
}
);
答案 1 :(得分:3)
您必须将此路由添加为global.asax中的第一个条目,否则请求将路由到默认路由(或之前的路由)
答案 2 :(得分:0)
您的作业控制器需要一个索引操作,其命名参数为companyname,如:
public ActionResult Index(string companyname)
{
//Do some checking on the name
JobsListModel model = new JobsListModel();
return View(model);
}
你可能仍然需要空行动:
public ActionResult Index()
{
return Index(string.Empty);
}
哦,错过了这个。就像我前面的那个人说让你的其他网址工作一样:(http:// localhost:24873 / [companyname] / Jobs /)
routes.MapRoute(
"JobList", // Route name
"{companyname}/Jobs",
new
{
controller = "Jobs",
action = "Index",
companyname = string.Empty
}
);
答案 3 :(得分:-1)
试试这个: -
//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" });