Контроллер, не работающий в mvc 4

У меня есть контроллер, называемый UserController, и в этом случае вызывается только действие индекса другое действие, добавленное как " home action", не вызывается и либо вызывает actionresult/string, либо возвращает представление

Я получаю эту ошибку

во время работы в Google Chrome

{ "Сообщение": "Не найден ресурс HTTP, соответствующий URI запроса /user/home '.", "MessageDetail": "Нет не найдено, что соответствует контроллер с именем" home "." }

И работает в Mozilla Firefox

Упс! Не удалось найти страницу. Попробуйте дать ему еще один шанс ниже.

Вот мой весь код контроллера:

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

namespace Mvc4Application1.Controllers
{
    public class UserController : Controller
    {
        //
        // GET: /User/
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult AddPlace()
        {
            return View();
        }

        public ActionResult UpdatePlace()
        {
            return View();
        }

        public ActionResult DeletePlace()
        {
            return View();
        } 
    }
}

Вот файл RouteConfig.cs

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

Ответ 1

Ниже перечислены действия, которые необходимо выполнить для перекрестной проверки.

  • Унаследовать контроллер от контроллера, а не от ApiController
  • Убедитесь, что Routeconfig имеет правильный Maproute

    Иначе вам нужно переименовать контроллер [звучит странно, но может помочь]

и использовать ActionResult в качестве возвращаемого типа данных

Ответ 2

Метод в контроллере, который возвращает string, будет не маршрутизироваться. Он должен возвращать ActionResult (или один из его производных классов).

Измените его на:

public ActionResult Home()
{
    return View("Hello from home");
}

Затем в папке "Виды/Главная" добавьте представление "Главная", которое имеет что-то вроде:

@model string

<p>@Model</p>

Ответ 3

Что нужно учитывать:

  • Убедитесь, что вы наследуете свой контроллер от контроллера, а не от ApiController
  • Убедитесь, что ваши маршруты в порядке
  • Из комментариев также убедитесь, что ваш контроллер не является Домашним, этот Пользователь по умолчанию на вашем маршруте.

Это довольно простые вещи, но я несколько раз нажимал OK, чтобы понять, что я выбрал ApiController на Asp.NET MVC 4!

Пример маршрута:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "User", action = "home", id = UrlParameter.Optional } 
);

Обратите внимание, что это будет использовать UserController по умолчанию и дома, как представление по умолчанию, хотя я бы рекомендовал называть дом индексом, поскольку он более распространен.

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

Надеюсь, что смогу помочь!

Ответ 4

см. мой собственный вопрос! и мой собственный ответ вам просто нужно добавить дополнительный файл maproute в файле routeeconfig, чтобы иметь имя этого контроллера

routes.MapRoute(
                name: "WhateverName" ,
                url: "ProblematicControllerName/{action}/{id}" ,
                defaults: new { controller = "user" , action = "anyaction" , id = UrlParameter.Optional }


            );

Почему я не могу назвать сессию контроллера MVC.net?