2016-05-17 4 views
0

Я новичок в технологии MVC. Я получаю сообщение об ошибке при запуске моего приложения MVC. Я прикрепил свой код и изображение с ошибкой. Пожалуйста, разрешите мою проблему.Ошибка при запуске веб-приложения mvc?

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

Вы изменили свой RouteConfig для Default1Controller? По умолчанию он запускает действие HomeController и Index. Если вы измените имя контроллера, вы должны изменить RouteConfig в App_start – Marcin

+0

, как восстановить этот файл маршрутизации? –

+0

это мой routeconfig общественный класс RouteConfig { государственной статической силы RegisterRoutes (RouteCollection маршруты) { routes.IgnoreRoute ("{ресурс} .axd/{* Pathinfo}"); routes.MapRoute ( название: "По умолчанию", URL: "{контроллер}/{действие}/{ID}", по умолчанию: новый {контроллер = "Home", действие = "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

строка 'defaults:' описывает контроллер по умолчанию и действие – Marcin

+0

@Marcin ... Да. И OP хочет, чтобы контроллер 'Default1' был как контроллер по умолчанию. –

+0

Почему контроллер = «Главная» не работает –

1

Есть несколько вещей, чтобы исправить здесь.

По соглашению, первоначальный контроллер по умолчанию называется HomeController. ASP.NET MVC использует имя контроллера «Главная» для создания маршрутов. Посмотрите на маршрут по умолчанию конфигурации в:

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. Укажите маршрут в вашей URL: http://localhost/Default1/Index

Кроме того, ваше Index действия не выглядит совсем верно:

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

Я не уверен, что структура будет знать, что делать с этой строкой. Действия должны возвращать ActionResult (или любой их производный класс).Что-то вроде этого:

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

Там может быть некоторые функции в рамках для автоматического переноса значения в ContentResult, я не уверен. Но, по крайней мере, семантически кажется, что имеет смысл возвращать ActionResult последовательно. Это также поможет дифференцировать MVC-контроллеры и контроллеры API.

Кроме того, даже если это действие Index действительно работает или даже при использовании ContentResult, все, что он возвращает, это строка, а не фактическая страница. Это то, что вы хотите для своего действия по умолчанию, когда пользователь посещает сайт?

Смежные вопросы