控制器不工作在mvc 4

本文关键字:mvc 工作 控制器 | 更新日期: 2023-09-27 18:16:19

我有一个名为UserController的控制器,其中只有Index动作被调用另一个添加的操作,如'home action'没有被调用,调用actionresult/string或返回view

我得到这个错误

在Google Chrome上运行

{"Message":"没有找到与请求URI匹配的HTTP资源。/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 }

控制器不工作在mvc 4

控制器中返回string的方法将不是可路由。它必须返回一个ActionResult(或它的一个派生类)。

改为:

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

然后在Views/Home文件夹中添加Home视图,如下所示:

@model string
<p>@Model</p>

以下是您需要交叉检查的内容

  • 从控制器继承控制器而不是从ApiController继承控制器
  • 确保routecconfig有合适的Maproute

    否则你需要重命名控制器 [听起来很奇怪,但它可能有帮助]

使用ActionResult作为返回数据类型

注意事项:

  • 确保你从controller继承你的控制器,而不是从ApiController
  • 确保你的路由是OK的
  • 从注释中,也要确保如果你的控制器不是Home,那么用户是你路由上的默认值

这些都是相当简单的事情,但我已经点击OK几次才意识到我选择了asp.net MVC 4上的ApiController !

路由示例如下:

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

请注意,这将使用UserController作为默认视图,home作为默认视图,尽管,我建议将home命名为Index,因为它更常见。

如果不是这些,请张贴您的整个控制器,以便我们可以进一步了解它!

希望我能帮上忙!

看我自己的问题!而我自己的回答你只需要在routecconfig文件中添加一个额外的maproute就可以得到控制器名

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

            );

为什么我不能命名MVC .net控制器会话?

我有2 MVC/WebAPI项目在我的解决方案。不知何故,其中一个获得了对另一个的项目引用,这导致它只破坏了HelpController并导致document .xml异常。

删除这个引用解决了这个问题。我想这就是为什么你应该按CTRL+。