MVC ActionLink GET无法正常工作

时间:2015-12-21 14:43:33

标签: asp.net-mvc-4

我有以下链接

<a href="@Url.Action("Index", "Inspection")"><i class="fa fa-user-md"></i> Inspections</a>

在我的路线中,我有以下

routes.MapRoute("Inspections", "{controller}/{action}/{id}", new { controller = "Inspection", action = "Index", id = UrlParameter.Optional });

在Visual Studio中,当我单击它工作的链接时,在我的实时服务器上,我得到一个白色页面,其中包含以下粗体 xxx - / inspection /以及[To Parent Directory]链接

应用程序中的所有其他链接都正常工作并且符合预期 现在我必须去地址栏中的url去xxx / Inspection / Index

Index方法也有[HttpGet]

编辑1: 我尝试了以下内容,我也尝试删除路由

routes.MapRoute("Inspection", "{controller}/{action}/{id}", new { controller = "Inspection", action = "Index", id = UrlParameter.Optional });

编辑2:

这是我拥有的所有路线

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute("Login", "{controller}/{action}/{id}", new { controller = "Login", action = "Index", id = UrlParameter.Optional });
        routes.MapRoute("Employees", "{controller}/{action}/{id}", new { controller = "Employees", action = "Index", id = UrlParameter.Optional });
        //Added the following to try to fix issue
        routes.MapRoute("Inspection", "{controller}/{action}/{id}", new { controller = "Inspection", action = "Index", id = UrlParameter.Optional });

编辑3: 在InspectionController.cs中我有以下索引方法

    // GET: Inspection
    [HttpGet]
    public ActionResult Index()
    {
        return View(new ActiveInspectionsViewModel());
    }

编辑4:

这是打开的空白页面(示例)

xxx - /检查/

xxx - /检查/


[To Parent Directory]


编辑5:

我认为越来越接近这个问题,我已禁用目录浏览现在我收到403错误,这真的很奇怪,因为我的所有其他Action链接都有效(/ Employees,/ InspectionTemplates,/ Clients,/ Emails,/公司级别)Just / Inspection导致了这个问题,我的网址是inspection.xxx.co.za它可能是导致问题的公园域吗?

1 个答案:

答案 0 :(得分:1)

查看您的路线定义。

routes.MapRoute("Login", "{controller}/{action}/{id}", 
   new { controller = "Login", action = "Index", id = UrlParameter.Optional });

routes.MapRoute("Employees", "{controller}/{action}/{id}",
          new { controller = "Employees", action = "Index", id = UrlParameter.Optional });

routes.MapRoute("Inspection", "{controller}/{action}/{id}",
          new { controller = "Inspection", action = "Index", id = UrlParameter.Optional });

您注册的所有三个定义都具有相同的网址格式{controller}/{action}/{id}

因此,每当您请求页面时,请求URL将与注册的路由定义匹配,当它获得第一个匹配时,请求将被发送到定义中指定的控制器动作。

因此,当您请求Inspection/Index,时,它与第一个定义( Login )匹配,请求将发送到Login / Index操作方法。

由于在所有三条路线中除了自定义模式之外没有任何其他模式,因此您不需要这些模式。只需删除它们并保留默认值即可。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", 
                                                         id = UrlParameter.Optional }     
    );
}