Контроллер, не работающий в 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?