我希望我的 URL 为/{page number} 用于我的主页,例如 localhost:50915/1 用于第 1 页的记录列表,我的 URL 路由如下:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "EditForm",
url: "{controller}/{formid}",
defaults: new { controller = "ManageForm", action = "Update", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Home",
url: "{page}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
第二个 MapRoute 方法是我添加的用于执行所需操作的方法。它工作得很好,但是每当我尝试访问另一个 Controller “ManageController”时,例如 localhost:50915/ManageForm 它会返回我的主页(显示记录列表的同一页面)。
这是我的解决方案的快照:

每当我尝试删除为主页分页执行此 URL 重新路由的代码行时,一切正常,但当然 URL 将是 localhost:50915?page=1
我的 HomeController 如下:
public class HomeController : Controller
{
//
// GET: /Home/
[HttpGet]
public ViewResult Index(int page = 1)
{
const int pageSize = 4;
FormCollection forms = FormService.GetAllActiveForms(page, pageSize);
var formModel = new FormListViewModel
{
Forms = forms,
PagingInfo = new PageInfo
{
PageNumber = page,
PageSize = pageSize,
TotalItems = forms.Count > 0 ? forms[0].TotalRecord : 0
}
};
return View(formModel);
}
}
非常感谢帮助。
最佳答案
您不能使用 localhost:50915/ManageForm
导致它与另一个路由定义冲突。 MVC 看不到 "{controller}/{formid}"
之间的区别和 "{page}"
当你的路由参数是可选的。
你必须使用你的第一条路线作为localhost:50915/ManageForm/{formId}
让它工作。
关于c# - 路由问题 MVC4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30161171/