将ascx迁移到ASP.NET MVC 5中的cshtml

问题描述 投票:0回答:1

我的项目中有一个Menu.ascx文件。主视图使用Html.RenderAction()调用名称为Menu()的控制器方法。这在旧页面中工作正常。我正在缓慢地将页面迁移到razor和MVC5。我已经创建了“布局”视图,并且我想对Menu.ascx进行重新处理以使其对要转换的页面更加现代。因此,我在项目中创建了Menu.cshtml。在我的布局中,我使用相同的Html.RenderAction(),它确实调用了此方法。但是,似乎没有使用我的Menu.cshtml输出。

有什么方法可以在不破坏原始Menu.ascx文件的情况下执行此操作,因为对于两个版本的MVC视图使用相同的控制器方法,这真的很顺利。我以为是因为我的MVC 5布局是如何调用Html.RenderAction()的,所以它知道在菜单末尾返回View()时会得到Menu.cshtml视图,但似乎并没有正在这样做。

我可以添加一个参数并进行一些分支操作,以专门指定Menu.cshtml,但随后我将编辑原始的控制器方法,我很好奇是否有一种无需编辑即可执行此操作的方法。

public ViewResult Menu(CurrentUser user, string vendorId)
{
   return View(myModelHere);
}

[更新]好的,所以当我尝试指定Menu.cshtml时,它会错误地指出无法找到它,然后列出了它尝试过的内容。它列出了Menu.cshtml.ascx和Menu.cshtml.cshtml。所以我删除了控制器中的.cshtml,然后没有错误,但没有得到Menu.cshtml文件,而是得到了Menu.ascx文件。因此,就像先查找视图文件ascx的顺序一样,找到它后就使用它。嗯,不知道该怎么做才能使用Menu.cshtml。

asp.net asp.net-mvc-5
1个回答
0
投票

事实证明,我必须指定带有扩展名的完整路径才能完成此工作,这意味着我需要将另一个参数传递给控制器​​,以了解我来自什么RenderAction()。我不喜欢那部分。

© www.soinside.com 2019 - 2024. All rights reserved.