Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC3我的程序在错误的位置查找视图_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc MVC3我的程序在错误的位置查找视图

Asp.net mvc MVC3我的程序在错误的位置查找视图,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我创建了一个项目,并在其中努力工作,创建了许多模型、视图和控制器。一切都很好。我决定重新命名我的一个模型,并相应地重新命名我的控制器和视图,认为这一切都将继续工作得很好。这是因为我想在以后使用更合适的原始名称。比如说 旧名称: MyOldModel MyOldController MyOldView 已重命名为: MyNewModel MyNewController MyNewView 现在一切仍然很好,当我点击指向我的新视图的链接时,我的程序会查找并尝试显示明显不存在的MyOldView。但是

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

旧名称:
MyOldModel
MyOldController
MyOldView

已重命名为:
MyNewModel
MyNewController
MyNewView

现在一切仍然很好,当我点击指向我的新视图的链接时,我的程序会查找并尝试显示明显不存在的MyOldView。但是,当我手动输入/MyNewView时,它可以工作

如何将控制器更改为在MyNewView文件夹中查找索引,而不是在MyOldView文件夹中查找索引

我甚至尝试删除并重新创建控制器,但都没有成功

提前感谢您的帮助

编辑:对于那些非常友好的人,他们可以很快回复一些需要注意的事情: 所采取的具体步骤如下:
1.将模型文件从MyOldModel.cs重命名为MyNewModel.cs
2.将控制器文件从MyOldController.cs重命名为MyNewController.cs
3.重命名视图上的文件夹(仅包含Index.cshtml)
从MyOldView到MyNewView
4.在每个步骤中,VisualStudio都会提示我将所有引用重命名为要重命名的对象,我接受了(回答是)。因此,所有的类名都得到了正确的更新。至少从我所看到的来看,所有其他的参考文献也是如此

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


我只是重命名了

您是否确保重命名了控制器文件中的类,而不仅仅是文件本身?i、 所以它包含

public class MyNewController : Controller {
    ....
}

假设您在
MyNewController
上有一个索引操作:

public class MyNewController: Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

现在,确保已将视图放置在
~/Views/MyNew/Index.cshtml
中。这是既定的惯例。请注意,如果控制器类名为
MyNewController
,则文件夹必须名为
MyNew
。另外,在重命名控制器类后,不要忘记重新编译web应用程序

您是否对路由列表进行了必要的修改(在Global.asax文件i Application_Start()事件中注册):


根据op的要求,我的评论作为回答:


检查您的_布局是否也从按钮单击指向右侧视图,否则,当您使用新控制器/视图替换/重命名旧控制器/视图时,它仍将搜索旧控制器/视图,很高兴能提供帮助

您的视图位于何处(哪个文件夹?)。您应该创建一个名为控制器的文件夹:(例如,如果您的控制器名为fooController,请创建一个名为foo的文件夹)并在其中创建视图检查您的_布局是否也从按钮单击指向右侧视图关闭您的控制器类请,您是否也更改了任何操作名称?文件夹(用于视图)已重命名,控制器类和文件夹都只包含默认索引和Index.cshtml。_布局中不再有链接,因为它们不需要了。我使用局部视图从不同的文件加载链接。把这作为一个答案,我会给你接受的答案点,因为它是在其他文件中的链接是错误的。谢谢。@RhysW请将您的评论作为回答。这让我找到了解决方案,我想给你一些公认的答案。谢谢你花时间回答。我看了看,没有看到任何有帮助的东西。我理解这一点,并小心地确保所有引用都被重命名。谢谢你花时间回答。我理解这一点,并小心地确保所有引用都被重命名。感谢您花时间回答。我有一个XML文件,其中包含链接和其他一些信息,可以很小地创建一个合适的表。我的一个模型读入并解析它。然后链接将显示在局部视图中,而局部视图又作为_Layout.cshtml的一部分显示。这就是你的评论让我得到答案的原因。再次感谢。啊,局部视图,我忘了这些,直接向大炮射击,很高兴你把它整理好了!
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
            );

        }