【发布时间】:2014-08-03 20:21:23
【问题描述】:
这是一个很奇怪的问题。我是来自 web 表单的 mvc 世界的新手,我正在尝试理解它的概念。 在vs 2013中使用MVC模板(高级版),我已经建立了一个项目。为了看看事情是如何运作的:
- 我创建了一个新的控制器“IndexController”并将其放在文件夹 .../Controllers/IndexController.cs 中
- 我为此控制器“Index.cshtml”创建了一个新视图并将其放在相应的文件夹中:.../Views/Index/[@] Index.cshtml
- 然后我更改路由,以便默认路由现在将指向此 IndexController 而不是默认 HomeController
这是我的路由表:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Index", action = "GetIndexPage", id = UrlParameter.Optional }
);
}
}
你可以看到我使用“GetIndexPage”作为默认操作而不是“Index”(我正在玩,看看它是如何工作的) 当我在 Index.cshtml 中进行更改时(比如我添加了一个简单的标记并点击“运行”,我总是会收到错误消息
Server Error in '/' Application. The resource cannot be found.
查看地址栏,我看到浏览器正在寻找资源“localhost:xxx/Index/Index”而不是“localhost:xxx/Index/GetIndexPage”。为了解决这个问题,我进入 IndexController 并在行中放了一个断点
return View(...);
现在我点击“运行”,在断点处停止后,一切正常。所以这不是路由问题,因为页面是在这个断点技巧之后显示的。在我对 cshtml 视图进行更改后,Visual Studio 似乎弄乱了我正在使用的 IIS Express 的部署。当我对控制器后面的代码进行更改时,不会出现此问题。我不知道在哪里看...我整晚都在尝试在 Google 和 stackoverflow 中找到解决方案...我不想重新安装整个视觉工作室。任何帮助,对某个方向的任何提示将不胜感激。
【问题讨论】:
-
在 Views/Index 文件夹中是否有一个名为
'GetIndexPage.cshtml的视图? -
不,我有视图 Index.cshtml
-
所以你要返回
return View("Index");吗? -
是的,完全是完整路径
-
[@]中的/Views/Index/[@] Index.cshtml是什么?
标签: c# asp.net asp.net-mvc asp.net-mvc-4