2016-04-02 8 views
0

Web APIの世界に新しく、カスタム表示を表示できないようです。私は基本的なことをやっており、私のコントローラーでリンクされているように見える方法を作りました。私はMVCにもっと精通していますので、ここで何か基本的なものが欠けているのだろうかと思います。ビューは常に私にアクセスすることはできませんエラーを返します。ASP.Net Web APIクライアントで別のビューを表示

生成にHomeControllerでのActionResult、:メニューでそれを呼び出すための

[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 } 
    ); 
} 

編集 - エラーメッセージのリンク

'/'アプリケーションでサーバーエラーが発生しました。

リソースが見つかりません。

説明HTTP 404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次のURLを確認し、スペルが間違っていないことを確認してください>。

要求されたURL:/ホーム/ SpotDetails

+0

エラーの詳細はなんですか? –

+0

@StephenMuecke正確なエラーを追加しました – ZippyPippy

+0

私によく見えます。 SpotDetails.cshtmlは/ Views/Home /にあり、まったく同じスペルですか? – smoore4

答えて

1

ほとんどの場合、これはあなたのスタートアップコンフィギュレーションの問題です。ルートは、最も具体的なものから最も具体的でないものの順に登録する必要があります。あなたはRouteConfig.RegisterRoutesWebApiConfig.Registerの方法の中でそれを説明しました。ただし、WebApiConfig.RegisterRouteConfig.RegisterRoutesより先に呼び出すか、またはDefaultルートをWeb APIルートのどれよりも優先させる必要があります。

WebApiConfig.Register(GlobalConfiguration.Configuration); 
RouteConfig.RegisterRoutes(RouteTable.Routes); 
関連する問題