我在MVC上进行了全新的测试和学习模式。
我构建了一个TestController
和一个Test1
视图,并将RouteConfig更改为default = Test,Index。但这有用......
如果我突破TestController Index ActionResult
行:
return View("~/Views/Test/Test1.cshtml");
然后继续,它显示我的Test1
视图页面(这是一个新的,普通的视图,没有布局,在div中说“哇!”)
如果我然后删除了中断,请修改Test1
视图页面(比如将一个字符添加到“Yow!”),然后在没有中断的情况下重新运行,我收到404
错误。
如果我重置中断并重新运行,请点击中断并继续,它会显示更新后的Test1
视图。
这种情况一直发生。
为什么对Test1
视图进行小的修改会导致localhost找不到视图?为什么要休息并继续让它找到视图?
答案 0 :(得分:1)
如果您在Web
标签上转到ASP MVC项目的属性(右键单击项目,选择属性),则会有Start Action
部分。默认情况下,选择当前页面,这意味着如果您使用当前打开的视图开始调试,VS将尝试导航到该视图的路径。
让我解释一下:
让我们假设您使用Home控制器创建一个新的MVC项目
索引视图和典型的/ controller / action / id路由。如果你有
"当前页面"选择作为"开始操作"的选项,然后开始
在打开Index视图的调试中,VS会尝试打开一个像这样的URL
http://localhost:59774/Views/Home/Index.cshtml
但是如您所知,该网址因您需要符合要求而无法正常工作
MVC项目中定义的路由。例如
对于家庭控制器中的索引操作,http://localhost:59774/Home/Index
或http://localhost:59774/
将是有效的网址
这就是为什么当您打开视图启动或重新启动调试时的原因
得到404.但是当你打开控制器时,没有当前页面,VS会尝试导航到应用程序的根目录(如http://localhost:59774/
)
您只需更改项目的Start Action
选项,选择特定页面,然后将其留空。这将导致root被打开,就像从控制器开始调试一样。
另外,请记住,您可以对视图进行这些更改,而无需重新编译或重新启动调试。