我有一个名为UserController的控制器,并且只调用了Index操作 未调用另一个添加的操作,例如“主页操作”,调用actionresult / string或返回视图
我收到此错误
在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 }
答案 0 :(得分:14)
Controller中返回string
的方法不可路由。 必须返回ActionResult
(或其中一个派生类)。
将其更改为:
public ActionResult Home()
{
return View("Hello from home");
}
然后在Views / Home文件夹中,添加一个名为Home的视图,其中包含:
@model string
<p>@Model</p>
答案 1 :(得分:11)
以下是您需要交叉检查的内容
确保Routeconfig具有正确的Maproute
否则你需要重命名控制器 [听起来很奇怪,但可能有帮助]
和使用ActionResult作为返回数据类型
答案 2 :(得分:5)
需要考虑的事项:
这些都是相当简单的事情,但为了意识到我在Asp .NET MVC 4上选择了ApiController,我已经多次点击OK了!
示例路线为:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "User", action = "home", id = UrlParameter.Optional }
);
请注意,这将使用UserController作为默认视图,将home作为默认视图,但我建议将其命名为Index,因为它更常见。
如果不是这些,请发布您的整个控制器,以便我们进一步了解它!
希望我能帮忙!
答案 3 :(得分:0)
看看我自己的问题!和我自己的回复 您只需要在routeconfig文件中添加一个额外的maproute,以便拥有该控制器名称
routes.MapRoute(
name: "WhateverName" ,
url: "ProblematicControllerName/{action}/{id}" ,
defaults: new { controller = "user" , action = "anyaction" , id = UrlParameter.Optional }
);