c# - 路由问题 MVC4

标签 c# asp.net-mvc asp.net-mvc-4

我希望我的 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 它会返回我的主页(显示记录列表的同一页面)。

这是我的解决方案的快照:

Solution Snapshot

每当我尝试删除为主页分页执行此 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/

相关文章:

c# - 在 ASP .NET MVC 4 中运行 Owin 应用程序

c# - ASP.NET自定义控件属性访问

c# - 如何使用反射获取构造函数作为 MethodInfo

c# - 围绕多个语句的锁定语句是否确保所有更改对其他线程可见(前提是它们进入相同的互斥体)?

c# - 如何使用 Ajax.BeginForm 更新 div 并执行 javascript 函数?

asp.net - ASP.net 中的文件夹浏览

c# - 配置路由到api到子文件夹

c# - QueryOver 集合包含所有值

c# - 如何使/Home/Index 重定向到/

c# - HTML.TextBoxFor 禁用不传递值