我被要求处理.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
文件(我使用断点来计算)。
我的雇主要求我保持与现有代码的一致性,所以我试图坚持原始的编码风格。这可能是错误的模型映射或设置的问题吗?
答案 0 :(得分:0)
如果你在同一个控制器中有2x public ViewResult Index()
,它就不会起作用,你会混淆应用程序选择哪个方法签名,因为它们是相同的。
您应该在单独的控制器中使用 TransportPlannerViewModel 代码。这应该指向与该控制器关联的不同视图文件夹。
IE中。如果第一个代码块的控制器是 TransactionHistory ,那么它将在 Views \ TransactionHistory \ Index.cshtml 下查找视图。< / p>
默认情况下,它使用模式Views \ ControllerName \ ActionName(methodName)来查找视图。
为了让它适用于您的其他方法,如果我了解您要正确执行的操作,则应该有 TransportPlanner 控制器,然后它会在下查找您的视图视图\ TransportPlanner能够\ Index.cshtml 强>
请澄清这不是您想要做的。