Web API世界的新手,我似乎无法显示任何自定义视图。我已经完成了基础知识,在我的控制器中创建了一个方法,在我调用它的地方似乎已经纠正了。我对MVC比较熟悉,所以我想知道我在这里遗漏了什么东西吗?视图总是会返回一个无法访问的错误。
ActionResult,在生成的HomeController中:
[HttpGet]
public ActionResult SpotDetails()
{
ViewBag.Title = "Spot Details";
return View();
}
在菜单中调用它的链接:
<ul class="nav navbar-nav">
<li>@Html.ActionLink("SHOR //", "Index", "Home", new {area = ""}, null)</li>
<li>@Html.ActionLink("Index", "Index", "Home", new {area = ""}, null)</li>
<li>@Html.ActionLink("Spot Profile", "SpotDetails", "Home", new {area = ""}, null)</li>
<li>@Html.ActionLink("API", "Index", "Help", new {area = ""}, null)</li>
</ul>
我应该说索引和api帮助页面的链接工作正常。
这是我的RouteConfig,如果它有问题,我根本没碰过它:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
最后我的WebApiConfig:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling =
Newtonsoft.Json.ReferenceLoopHandling.Ignore;
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
编辑 - 单击链接时的错误消息:
&#39; /&#39;中的服务器错误应用
无法找到资源。
说明:HTTP 404.您要查找的资源(或其某个&gt;依赖项)可能已被删除,名称已更改,或暂时>不可用。请查看以下网址,并确保正确拼写&gt;
请求的网址:/ Home / SpotDetails
答案 0 :(得分:1)
这很可能是您的启动配置问题。路线必须按照从最具体到最不具体的顺序进行登记。您已在RouteConfig.RegisterRoutes
和WebApiConfig.Register
方法中对此进行了解释。但是,您还必须在WebApiConfig.Register
之前致电RouteConfig.RegisterRoutes
,否则您的Default
路线将优先于任何网络API路线。
WebApiConfig.Register(GlobalConfiguration.Configuration);
RouteConfig.RegisterRoutes(RouteTable.Routes);