Asp.net mvc MVC视图间歇性加载

Asp.net mvc MVC视图间歇性加载,asp.net-mvc,Asp.net Mvc,我在MVC上处于全新的测试和学习模式 我构建了一个TestController和一个Test1视图,并将RouteConfig更改为default=Test,Index。不过,这是可行的 如果我在TestController Index ActionResult行中断: return View("~/Views/Test/Test1.cshtml"); 然后继续,它将显示我的Test1view页面(这是一个新的、普通的视图,没有布局,在div中显示“哟!”) 如果我删除了中断,修改Test1查

我在MVC上处于全新的测试和学习模式

我构建了一个
TestController
和一个
Test1
视图,并将RouteConfig更改为default=Test,Index。不过,这是可行的

如果我在
TestController Index ActionResult
行中断:

return View("~/Views/Test/Test1.cshtml");
然后继续,它将显示我的
Test1
view页面(这是一个新的、普通的视图,没有布局,在div中显示“哟!”)

如果我删除了中断,修改
Test1
查看页面(比如在“Yow!”中添加一个字符),然后在没有中断的情况下重新运行,我会得到一个
404
错误

如果我重置中断并重新运行,点击中断并继续,它将显示更新的
Test1
视图

这种情况经常发生


为什么对
Test1
视图进行一个小的修改会导致本地主机找不到该视图?为什么中断并继续会导致它找到视图?

如果在
Web
选项卡上转到ASP MVC项目的属性(右键单击项目,选择属性),则会出现
开始操作
部分。默认情况下,当前页面处于选中状态,这意味着如果使用当前打开的视图开始调试,VS将尝试导航到该视图的路径

让我解释一下:

  • 假设您创建了一个带有主控制器和 索引视图,以及典型的/controller/action/id路由。如果你有 选择“当前页面”作为“启动操作”选项,然后启动 调试打开索引视图后,VS将尝试打开URL,如
    http://localhost:59774/Views/Home/Index.cshtml

  • 但正如您所知,该URL无法正常工作,因为您需要符合
    在MVC项目中定义的管线。例如
    http://localhost:59774/Home/Index
    http://localhost:59774/
    将是主控制器中索引操作的有效URL

  • 这就是为什么在打开视图时启动或重新启动调试 找一辆404。但是,当您打开控制器时,没有当前页面,VS将尝试导航到应用程序的根目录(如
    http://localhost:59774/

您只需更改项目的
开始操作
选项,改为选择特定页面,并将其保留为空。这将导致根目录被打开,与从控制器开始调试时相同


另外,请记住,您可以对视图进行此类更改,而无需重新编译或重新启动调试。

我真的不明白您说的是什么,但请在应用程序启动时检查目录,它从您在visual studio的位置开始。也许这就是你说的“重新运行”是什么意思?您正在刷新页面吗?或者再次点击从VS开始?重新运行=停止调试并重新启动调试。页面刷新不会更改404。新数据:它与选择的文档有关。如果我在选择视图的情况下启动调试,在视图更改之后,它会给出404错误。如果在视图更改后使用选定的控制器启动调试,则可以正常工作。所以“中断/继续”是不相关的,这恰好与选择控制器文档一致。那么,也许这只是VS的一种“行为”?但那是怎么回事?我的意思是,至少我现在可以继续了,但是仅仅因为视图是在VS中选择的,所以让它不工作是没有意义的。这是一个很好的解释。我让它按照指示工作。它提供了关于VS如何与MVC一起工作的一些很好的见解。非常感谢@旅行者,我很高兴这能帮上忙。记住,如果答案对你有帮助,你可以接受:)