2015-12-21 83 views
0

我有以下链接MVC ActionLink的GET工作不

<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 /和一个链接[到父目录]

应用程序中的所有其他链接工作正常,并且如预期的那样 现在我必须去和在此改变URL地址栏去XXX /检查/指数

索引方法的确也有[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我有以下Index方法

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

编辑4:

这里是空白页打开(例如)

XXX - /检查/

xxx -/Inspection/


[To Parent Directory]


Edi t 5:

我认为越来越接近这个问题,我已经禁用了Directory Browsing,现在我得到了403错误,这真的很奇怪,因为我所有的其他Action链接工作(/ Employees,/ InspectionTemplates,/ Clients, /电子邮件,/ CompanyLevels)这是造成问题的正义/检查,我的网址是inspection.xxx.co.za它可以是造成问题的公园领域?

+0

这是您的默认路线 - 或者您是否有其他路线? – MichaelLake

+0

我只有一条路线,让我更新所有路线的问题 –

+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都将与注册的路由定义相匹配,并且当它获得第一个匹配时,请求将发送到定义中指定的controller-action。

因此,当您请求Inspection/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 }  
    ); 
} 
+0

这并没有解决问题,我有改变了我的路线,但问题仍然存在,当我点击动作链接时,空白页出现在地址栏http:// xxx/Inspection /带有我的问题中描述的文本中的以下网址,但尽快我只是在页面加载正确结束时添加索引,即http:// xxx/Inspection/Index –

+0

我认为这与您的路由无关。它可能是您的应用程序的IIS设置。你有什么版本的IIS?目录浏览是否启用?如果您的虚拟主机中出现问题,可能是您的虚拟主机控制面板中的一项设置需要更改。尝试将代码部署到本地计算机上的IIS Web服务器,并查看是否仍然存在问题。如果没有,请与您的虚拟主机联系 – Shyju

+0

如果是IIS(我正在使用IIS 8.0),它可能是什么。禁用目录浏览后查看我更新的问题 –