Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制器在MVC4中不工作_C#_.net_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4 - Fatal编程技术网

C# 控制器在MVC4中不工作

C# 控制器在MVC4中不工作,c#,.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,C#,.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有一个名为UserController的控制器,其中只调用索引操作 未调用另一个添加为“主操作”的操作,调用actionresult/string或返回视图 我得到了这个错误 在Google Chrome上运行时 {“Message”:“未找到与请求URI匹配的HTTP资源 /用户/home.,“MessageDetail”:“未找到与 名为“主”的控制器。“} 并在Mozilla Firefox上运行 哎呀!找不到该页。试着再给它一次机会 下面 这是我的整个控制器代码: using Syst

我有一个名为UserController的控制器,其中只调用索引操作 未调用另一个添加为“主操作”的操作,调用actionresult/string或返回视图

我得到了这个错误

在Google Chrome上运行时

{“Message”:“未找到与请求URI匹配的HTTP资源 /用户/home.,“MessageDetail”:“未找到与 名为“主”的控制器。“}

并在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 }
需要考虑的事项:

  • 确保您是从controller继承控制器,而不是从ApiController继承控制器
  • 确保你的路线正常
  • 从注释中,还要确保如果控制器不在家,则该用户是路线上的默认用户
这些都是相当简单的事情,但我已经点击了好几次OK才意识到我选择了Asp.NETMVC4上的ApiController

例如:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "User", action = "home", id = UrlParameter.Optional } 
);
请注意,这将使用UserController作为默认视图,home作为默认视图,不过,我建议将home命名为Index,因为它更常见

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


希望我能帮忙

控制器中返回
字符串的方法将不可路由。它必须返回一个
操作结果
(或它的一个派生类)

将其更改为:

public ActionResult Home()
{
    return View("Hello from home");
}
然后在Views/Home文件夹中,添加一个名为Home的视图,其内容如下:

@model string

<p>@Model</p>
@模型字符串
@模型

以下是您需要交叉检查的事项

  • 从控制器而不是从ApiController继承控制器
  • 确保Routeconfig具有正确的Maproute

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


使用ActionResult作为返回数据类型

查看我自己的问题!还有我自己的回答 您只需在routeconfig文件中添加一个额外的maproute,即可获得该控制器名称

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


            );

请显示代码,重定向到哪里?您的路由代码是什么样子的?您没有家庭控制器吗?这是MVC默认的外观。UserController的url应该是/user.true,我没有看到字符串返回!如果路由指向controllerDarndest,这很可能就是问题所在,我也遇到了同样的问题,并重命名了controller,它为我分叉。有人知道为什么它不喜欢某些名字吗?我试着把它重新命名为原来的名字,但它还是坏了。