2013-06-24 21 views
6

我刚刚使用Razor引擎创建了一个新的ASP.NET MVC 3项目。我添加了一个控制器到控制器文件夹,然后在homController.cs我添加了一个视图。使用Razor引擎的ASP.NET MVC 3中的'/'应用程序中的服务器错误

的视图(index.cshtml)只有这个代码:

@{ 
    ViewBag.Title = "Home"; 
} 

<h2>Home</h2> 

当我开始调试它表明我这个错误:

Server Error in '/' Application. 
The resource cannot be found. 

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. 

Requested URL:/

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.225 

什么问题?

+0

我想象你的路线错了 - 你的控制器的名字是什么? – glosrob

+0

homController.cs是控制器的名称......当我调试它的路由是:'http:// localhost:13628 /',它不是工作! – user2478115

+0

当我创建一个asp.net Web应用程序(没有MVC)并进行调试时,它完美地工作....我不知道错误为什么会出现! – user2478115

回答

6

你能检查App_Start/RouteConfig.cs,你必须有一个控制器称为homController.cs验证码:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "hom", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

我想,你的第一个控制器的名字不是“家”,让你必须更改默认的控制器名称!

+0

你能告诉我在哪里可以找到App_Start/RouteConfig.cs ???我查看了解决方案资源管理器中的每个文件夹,但是我找不到你在说什么! – user2478115

+0

我去了Global.asax,并找到了你的代码我todl ....我应该改变什么?我的控制器的名字是:homController.cs – user2478115

+1

如果你的控制器的名称是homController,你必须改变默认控制器的值为'hom'。我已经更新了我的答案 –

2

检查您的路由项在Global.asax中的Application_Start中,因为您使用的是MVC 3.就像“Joffrey Kern”建议的那样,您需要配置路由。

也确保你的控制器被命名为“HomeController”,并且你有一个名为“Index”的公共方法返回一个ActionResult对象。

2

在ASP .NET MVC 3的路由在Global.asax

定义可以发现,在该网站的根。

默认情况下,它看起来像这样:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 
} 

这意味着当你调用网站根不带参数,它使用默认值 - 在这种情况下home/index

所以,你需要确保你:

  • 有一个名为控制器home
  • Action称为index返回一个ActionResult

或者,你可以在路由更新默认值,但如果你刚刚开始,我不会推荐这个。

-1

这是ravinder阿库拉

请找到这个答案

  • 右键点击你的MVC项目

  • 选择 “属性”

  • 选择 “Web” 选项卡

  • 选择“特定页”

  • 假设你有一个名为HomeController的控制器,并呼吁指数,进入“家庭/索引”,而不是 家/索引的动作 方法。 cshtml进入对应于 “Specific Page”单选按钮的文本框。

0

它并不一定是你的路线......这可能是在web配置

0

错误配置如果您收到此错误,我强烈建议你改变你的公共类的名字。给一个新的名称作为“HomeController”:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MyFirstMVC.Controllers 
{ 
    public class HomeController : Controller 
    { 

     // GET: /First/ 

     public string Index() 
     { 
      return "Jay Swaminarayan"; // this string will be display at your run time!!! 
     } 

    } 
} 
相关问题