我创建了许多控制器,每个控制器都返回了许多视图。
输入网址后,视图会在浏览器上成功显示,例如: /本地主机:21419 /会计/索引
除了一个(名为OrderController)
之外,显示任何控制器视图的视图都没有问题对于这个OrderController,当我在浏览器上输入url时出现404错误。例如:/ localhost:21419 / Order / Index。
我进入页面显示的唯一一次是当我输入/ localhost:21419 / Order(显示索引页面)。 但是当我输入/ localhost:21419 / Order / Index时,我得到了同样的错误。我尝试创建一个新的动作方法和一个与之对应的视图,但是这个控制器下的所有视图都没有被渲染。可能是什么问题?
我的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");
似乎没有任何帮助。
答案 0 :(得分:1)
关于你的路线配置。
这是一个基本的默认路线:
if (val >= 10 && val < 13) {
arr[arr.length - 1].push(val);
}
else if (val >= 13 && val < 16) {
arr[arr.length].push([val]);
}
我建议删除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"}
如果ID是可选的,并且您未在某些请求中发送new { controller = "Home", action = "Index", id = UrlParameter.Optional }
必要。
如果您正在使用区域,最好像这样禁用id = UrlParameter.Optional
:
UseNamespaceFallback
答案 1 :(得分:0)
如果路由适用于其他控制器,则路由不会出现问题。你得到的是404,我怀疑你在Order部分下没有Index视图。单击views-&gt; Order并查看Index是否存在。如果不是,我们必须创建一个,或者我们需要进一步使用您的控制器代码。如果粘贴控制器代码,我可以进一步提供帮助。你粘贴的代码片段看起来很好。右键单击控制器并创建视图可能会将视图放在不同的文件夹中。