我如何得到ASP.. NET以正确路由控制器

本文关键字:路由 控制器 NET 何得 ASP | 更新日期: 2023-09-27 17:52:59

我在我的控制器中有这个:

    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,我得到这个错误:

" '/'应用程序中服务器错误。"没有找到视图"details"或它的主视图,或者没有视图引擎支持搜索的位置。"

奇怪的是,如果我使用ASP。. NET脚手架来生成视图,其中的Details部分工作得很好。基本上和上面的代码是一样的。

这是我的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 }
        );
    }
}

那么为什么脚手架控制器工作良好,没有任何具体添加到routecconfig,但我的控制器细节方法不工作?

我如何得到ASP.. NET以正确路由控制器

错误中应该有更多关于搜索位置的详细信息。你在控制器中设置断点并检查它是否被击中了吗?

return View((object)result);
不是

return View(result)

导致它调用重载视图(string viewName)

如果这不起作用,尝试像这样显式地指定viewName:

return View("ViewName", name);

另外,检查你的文件夹结构。MVC在视图文件夹下查找视图(如Index),但它们也必须在以其控制器命名的文件夹下(部分视图除外)。