MVC3我的程序正在查看视图的错误位置

时间:2012-06-11 14:44:34

标签: asp.net-mvc asp.net-mvc-3

我创建了一个项目,并在其中努力工作并创建了许多模型,视图和控制器。一切都很好。我决定重命名我的一个模型,并相应地重命名我的控制器,并认为它将继续工作得很好。这是因为我想使用原始名称来获得更适合的东西。例如。

旧名称:
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都会提示我将所有引用重命名为重命名的对象,然后我接受了(是的)。所以类名都得到了正确的更新。从我至少可以看到,所有其他参考也是如此。

根据这里所说的,它应该有效。

我只是重命名了

4 个答案:

答案 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
            );

        }