2017-12-17 9 views
1

いくつかのルートを変更した後に、javascriptからエンドポイントにヒットするのに問題があります。私は2つのコントローラを持っており、そのURLに渡された変数だけを持つコントローラからエンドポイントにヒットしようとしています。コントローラへのHttpGetリクエストでブランクのMVCルートを使用する

RouteConfig.csファイル:

 routes.MapRoute(
      name: "Home Page", 
      url: "", 
      defaults: new { controller = "HomePage", action = "Home" } 
     ); 

     routes.MapRoute(
      name: "Example Page", 
      url: "{exampleId}", 
      defaults: new { controller = "ExamplePage", action = "Index"} 
     ); 

HomePageControllerがmysite.comに見舞われます。

examplePageControllerは、exampleId値に基づいてページを生成するmysite.com/valueによってヒットされます。

私が今やらなければならないことは、私のExamplePageControllerでエンドポイントをヒットすることです:

[HttpGet] 
    public ActionResult myEndpoint(string exampleId) { 
     var result = _exampleProvider.exampleFunction(exampleId); 

     return result; 
    } 

ので、URLは、私はJavaScriptからこのエンドポイントをヒットした場合のためにどのようなものが見えるでしょうか?ここで私は試してみましたそのいくつかは以下のとおりです。

www.mysite.com/ExamplePage/myEndpoint?exampleId=value

www.mysite.com/myEndpoint?exampleId=value

トップURLは1であります使用していましたが、ルートのRouteConfigのurl値を変更すると、エンドポイントはヒットすることができなくなりました。

ここに任意のアイデアはありますか? ありがとう!

+0

ブラウザで試してみると「mysite.com/value」が動作する場合は、javascriptから呼び出すときにも動作するはずです。 – Shyju

+0

Mysite.com/valueはメインコントローラメソッドですが、HttpGetリクエストを介してそのコントローラの別のメソッドにヒットしようとしています –

答えて

0

私は問題を理解しました.Urlは "{exampleId}/{action}"である必要があり、ホームページはルートリストの最下部にある必要があります。

URL内のアクションパラメータは関数名ですので、JavaScriptから打ったときに、私はこの方法を可能にしていませんでした

www.mysite.com/value/myEndpoint?exampleId=value のように見えますルートのパラメータになる名前。

ホームページのルートには、そのコントローラへの他のjavascript呼び出しがある場合は、URL Urlにactionパラメータも含まれている必要があります。 "{action}"

関連する問題