我创建了一个项目,并在其中努力工作并创建了许多模型,视图和控制器。一切都很好。我决定重命名我的一个模型,并相应地重命名我的控制器,并认为它将继续工作得很好。这是因为我想使用原始名称来获得更适合的东西。例如。
旧名称:
MyOldModel
MyOldController
MyOldView
被重命名为:
MyNewModel
MyNewController
MyNewView
现在所有人仍然工作得很好,当我点击链接到我的新视图时,我的程序会查找并尝试显示MyOldView,这显然不存在。但是,当我手动输入/ MyNewView时,它可以工作。
如何更改控制器以在MyNewView文件夹中查找索引,而不是在MyOldView文件夹中查找索引。
我甚至尝试删除并重新创建控制器无济于事。
提前感谢您的帮助。
编辑:对于那些善意回答这么快的人来说:
采取的确切步骤是:
1.将模型文件从MyOldModel.cs重命名为MyNewModel.cs
2.将控制器文件从MyOldController.cs重命名为MyNewController.cs
3.在视图上重命名FOLDER(仅包含Index.cshtml)
从MyOldView到MyNewView
4.在每一步,visual studio都会提示我将所有引用重命名为重命名的对象,然后我接受了(是的)。所以类名都得到了正确的更新。从我至少可以看到,所有其他参考也是如此。
根据这里所说的,它应该有效。
我只是重命名了
答案 0 :(得分:1)
根据操作要求,我的评论作为答案:
检查您的_Layout是否也从按钮点击指向正确的视图,否则当您使用新的控制器/视图替换/重命名时,它仍将搜索旧的控制器/视图,很高兴能提供帮助!
答案 1 :(得分:0)
您是否确保在Controller文件中重命名了该类,而不仅仅是文件本身?即所以它包含
public class MyNewController : Controller {
....
}
答案 2 :(得分:0)
假设您在MyNewController
上有一个索引操作:
public class MyNewController: Controller
{
public ActionResult Index()
{
return View();
}
}
现在确保您已将视图放在~/Views/MyNew/Index.cshtml
中。这是既定的惯例。请注意,如果您的控制器类被调用MyNewController
,则必须将该文件夹称为MyNew
。另外,在重命名控制器类后,不要忘记重新编译Web应用程序。
答案 3 :(得分:0)
您是否对路线列表进行了必要的修改(在Global.asax文件中注册i Application_Start()事件):
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}