C# 如何让ASP.NET正确路由控制器?

C# 如何让ASP.NET正确路由控制器?,c#,asp.net-mvc,C#,Asp.net Mvc,我的控制器中有: public ActionResult Details(int? id) { if(id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Sales saleRecord = new Sales(); var result = saleRecord.GetSal

我的控制器中有:

    public ActionResult Details(int? id)
    {
        if(id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        Sales saleRecord = new Sales();
        var result = saleRecord.GetSalesOrderHeader((int)id);


        return View(result);
    }
但是,如果我浏览到/ControllerName/Details/5,就会出现以下错误:

“/”应用程序中出现服务器错误。-未找到视图“详细信息”或其主视图,或者没有视图引擎支持搜索的位置。”

奇怪的是,如果我使用ASP.NETscaffolding生成一个视图,其中的细节部分就可以正常工作。这与我上面的代码基本相同

这是我的RouteConfig.cs,如果相关的话:

public class RouteConfig
{
    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 }
        );
    }
}

那么,为什么脚手架控制器工作正常,没有向RouteConfig添加任何特定的内容,但我的控制器详细信息方法不起作用?

应该有更多错误的详细信息,即搜索了哪些位置。你们有并没有把断点放在控制器上,并检查它是否被击中

试一试

而不是

return View(result)
导致其调用重载视图(字符串viewName)

如果这不起作用,请尝试显式指定viewName,如下所示:

return View("ViewName", name);

此外,请检查文件夹结构。MVC在“视图”文件夹下查找视图(如索引),但它们也必须位于以其控制器命名的文件夹下(局部视图除外)。

您将视图放置在何处?是否将其放置在错误消息指定的位置之一?顺便说一下,您的操作方法的路径似乎正在运行(您需要更改问题的标题)。如果在返回视图之前在操作中放置断点,是否会触发该操作?可能是视图名称不正确或位置错误。请确保您的视图位于相关目录中。MVC对此非常挑剔。示例:如果您的控制器名为
salecontroller
,请确保视图位于
Views/Sales
中。您在尝试导航到路线之前是否运行了项目?您好,我已经解决了问题,我不知道详细信息页需要作为文件存在,谢谢!
return View("ViewName", name);