HTTP 404 未找到错误
Http 404 Not Found error
我创建了多个控制器,每个控制器 returns 有多个视图。
进入url后浏览器成功显示视图,例如:
/localhost:21419/Accounting/Index
除了一个(名为 OrderController)之外的任何控制器视图显示视图都没有问题
对于这个 OrderController,当我在浏览器上输入 url 时出现 404 错误。例如:/localhost:21419/Order/Index。
唯一一次显示页面是在输入 /localhost:21419/Order 时(显示索引页面)。
但是当我输入 /localhost:21419/Order/Index 时,我得到了同样的错误。我尝试创建一个新的操作方法和一个与之对应的视图,但是正在呈现此控制器下的 none 个视图。可能是什么问题?
我的Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RouteTable.Routes.MapHubs();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
我的RouteConfig.cs(我也添加了命名空间)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
namespaces: new[] {"RRRPropPres.WebUI.Controllers"}
);
}
单独一个控制器不起作用的原因可能是什么?
我试过了
return View();
和
return View("name of View");
似乎没有任何帮助。
如果路由在其他控制器上工作正常,则路由不会有问题。您收到 404,我怀疑您在订单部分下没有索引视图。点击 views->Order 并查看 Index 是否存在。如果不是,我们必须创建一个,否则我们需要进一步处理您的控制器代码。如果您粘贴控制器代码,我可以进一步提供帮助。您粘贴的代码片段看起来没问题。右键单击控制器并创建视图可能会将您的视图放在不同的文件夹中。
这都是关于你的路由配置。
这是一条基本的默认路由:
routes.MapRoute(
"SomeName", // Route name
"/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
我建议删除 namespaces: new[] {"RRRPropPres.WebUI.Controllers"}
。
你也最好像这样定义默认值:new { controller = "Home", action = "Index", id = UrlParameter.Optional }
如果 id 是可选的并且您不在某些请求中发送它 id = UrlParameter.Optional
是 必需的。
如果您正在使用区域,最好像这样禁用 UseNamespaceFallback
:
routes.MapRoute(
...
).DataTokens["UseNamespaceFallback"] = false;
我创建了多个控制器,每个控制器 returns 有多个视图。
进入url后浏览器成功显示视图,例如: /localhost:21419/Accounting/Index
除了一个(名为 OrderController)之外的任何控制器视图显示视图都没有问题
对于这个 OrderController,当我在浏览器上输入 url 时出现 404 错误。例如:/localhost:21419/Order/Index。
唯一一次显示页面是在输入 /localhost:21419/Order 时(显示索引页面)。 但是当我输入 /localhost:21419/Order/Index 时,我得到了同样的错误。我尝试创建一个新的操作方法和一个与之对应的视图,但是正在呈现此控制器下的 none 个视图。可能是什么问题?
我的Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RouteTable.Routes.MapHubs();
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
我的RouteConfig.cs(我也添加了命名空间)
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
namespaces: new[] {"RRRPropPres.WebUI.Controllers"}
);
}
单独一个控制器不起作用的原因可能是什么?
我试过了
return View();
和
return View("name of View");
似乎没有任何帮助。
如果路由在其他控制器上工作正常,则路由不会有问题。您收到 404,我怀疑您在订单部分下没有索引视图。点击 views->Order 并查看 Index 是否存在。如果不是,我们必须创建一个,否则我们需要进一步处理您的控制器代码。如果您粘贴控制器代码,我可以进一步提供帮助。您粘贴的代码片段看起来没问题。右键单击控制器并创建视图可能会将您的视图放在不同的文件夹中。
这都是关于你的路由配置。
这是一条基本的默认路由:
routes.MapRoute(
"SomeName", // Route name
"/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
我建议删除 namespaces: new[] {"RRRPropPres.WebUI.Controllers"}
。
你也最好像这样定义默认值:new { controller = "Home", action = "Index", id = UrlParameter.Optional }
如果 id 是可选的并且您不在某些请求中发送它 id = UrlParameter.Optional
是 必需的。
如果您正在使用区域,最好像这样禁用 UseNamespaceFallback
:
routes.MapRoute(
...
).DataTokens["UseNamespaceFallback"] = false;