2016-05-17 113 views
0

我是MVC技術新手。當我運行我的MVC應用程序時出現錯誤。我附上我的代碼和錯誤圖像。請解決我的問題。運行mvc web應用程序時出錯?

enter image description here

我已經加入了一個名爲Default1Controller.cs這個控制器代碼控制器

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

namespace MvcApplication1.Controllers 
{ 
    public class Default1Controller : Controller 
    { 
     public string Index() 
     { 
      return "hello"; 
     } 
     public ActionResult About() 
     { 
      return View(); 
     } 
    } 
} 
+0

你是否修改了DefaultConfig的Default1Controller?它默認運行HomeController和Index操作。如果更改控制器名稱,則必須修改App_start中的RouteConfig – Marcin

+0

如何恢復此路由配置? –

+0

這是我routeconfig 公共類RouteConfig { 公共靜態無效的RegisterRoutes(RouteCollection路線) { routes.IgnoreRoute( 「{}資源個.axd/{*} PATHINFO」); routes.MapRoute( name:「Default」, url:「{controller}/{action}/{id}」, 默認值:new {controller =「Home」,action =「Index」,id = UrlParameter .Optional} ); }} 更改 –

回答

1

中只要改變這個你RouteConfig

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

要這樣:

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

因爲它默認運行HomeController

但是,如果你不想改變RouteConfig則可以將控制器重命名爲HomeController或在地址欄中輸入:

http://localhost:55416/default1 
+0

行默認值:'描述默認控制器和操作 – Marcin

+0

@Marcin ...是的。 OP希望'Default1'控制器作爲默認控制器。 –

+0

爲什麼控制器=「Home」不起作用 –

1

有幾件事情在這裏糾正。

按照慣例,初始默認控制器被稱爲HomeController。 ASP.NET .NET MVC使用控制器「Home」的名稱來構建路由。看看一個默認路由配置:

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

注意,defaults線地圖的一些選項的主要途徑。具體而言,它爲控制器名稱和操作名稱提供「默認」值,然後指定id組件是可選的。

在此設置中,當沒有指定控制器或動作時,Home/Index將是默認值。所以這個:

http://localhost/ 

將默認爲這條路線:

http://localhost/Home/Index 

但是你的控制器名爲Default1Controller。所以,你必須做下列之一:

  1. 控制器重命名爲HomeController(或無論是在你的路線配置);或
  2. 將您的路由配置更新爲默認Default1而不是Home;或
  3. 指定的路線在您的網址:http://localhost/Default1/Index

此外,您Index動作看起來不正確:

public string Index() 
{ 
    return "hello"; 
} 

我不知道該框架將知道該如何處理該字符串。行動需要返回ActionResult(或其派生類)。事情是這樣的:

public ActionResult Index() 
{ 
    return Content("hello"); 
} 

可能是在框架中的一些功能,在ContentResult自動換行的值,我不知道。但至少,從語義上來看,持續返回ActionResult會更有意義。這也有助於區分MVC控制器和API控制器。

此外,即使Index動作確實起作用,或者甚至在使用ContentResult時,它返回的所有內容都是一個字符串而不是實際頁面。這就是用戶訪問該網站時默認操作所需的內容嗎?