.NET MVC Controller未加载视图

时间:2017-01-09 04:44:50

标签: c# asp.net-mvc

我被要求处理.NET MVC应用程序的现有代码,并且需要添加新页面。我已经这样做了,但我遇到了问题。

应用程序在_Layout.cshtml页面中定义了一个通用布局(我需要为新页面使用相同的布局)。该路径显示在Viewstart.cshtml页面中。

这是现有页面的工作方式: 控制器有以下代码:

public ViewResult Index()
{
    TransactionHistoryViewModel model = new TransactionHistoryViewModel();
    model.SearchType = "TransactionHistory";
    return View(model);
}

当代码运行时,在执行上面的行之后,它会继续执行_ViewStart.cstml文件并执行以下操作:

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml";
}

但是当我尝试为我创建的控制器使用相同的逻辑时(我已经设置了模型):

public ViewResult Index()
{
    TransportPlannerViewModel model = new TransportPlannerViewModel();
    model.SearchType = "TransportPlanner";
    return View(model);
}

代码在上面的块之后停止执行,并且不会移动到_ViewStart文件(我使用断点来计算)。

我的雇主要求我保持与现有代码的一致性,所以我试图坚持原始的编码风格。这可能是错误的模型映射或设置的问题吗?

1 个答案:

答案 0 :(得分:0)

如果你在同一个控制器中有2x public ViewResult Index(),它就不会起作用,你会混淆应用程序选择哪个方法签名,因为它们是相同的。

您应该在单独的控制器中使用 TransportPlannerViewModel 代码。这应该指向与该控制器关联的不同视图文件夹。

IE中。如果第一个代码块的控制器是 TransactionHistory ,那么它将在 Views \ TransactionHistory \ Index.cshtml 下查找视图。< / p>

默认情况下,它使用模式Views \ ControllerName \ ActionName(methodName)来查找视图。

为了让它适用于您的其他方法,如果我了解您要正确执行的操作,则应该有 TransportPlanner 控制器,然后它会在下查找您的视图视图\ TransportPlanner能够\ Index.cshtml

请澄清这不是您想要做的。