2016-04-03 35 views
1

と戻り部分図は、私はすでにウェブAPIを使用しています、私はJSONオブジェクトを返すことができますが、私はHTMLでのビューを返したい:私はサイトコアでのAJAX呼び出し中に部分的なビューを返したいAJAX呼び出し

[HttpGet] 
public ActionResult StoreSearchResultsPartial() 
         {  
        return PartialView("/views/components/StoreSearchResults.cshtml"); 
       } 

私のAJAX呼び出し:

var ajaxUrl = "/api/sitecore/components/StoreSearchResultsPartial" 
     $.ajax({ 
      type: "GET", 
      url: ajaxUrl, 
      contentType: "application/json; charset=utf-8", 
      success: function (result) { 
       $("#searchResults").html(result); 
      }, 
      error: function (result) { 

      } 
     }); 

私は他の機能のためのWeb APIを使用していますので、私は自分のルーティングを追加しました:

public void Process(PipelineArgs args) 
    { 
     var config = GlobalConfiguration.Configuration; 

     RouteTable.Routes.MapHttpRoute(
         name: "NamedActionApi", 
         routeTemplate: "api/{controller}/{action}/{id}", 
         defaults: new { id = RouteParameter.Optional } 
         ).RouteHandler = new SessionRouteHandler(); 

     config.Routes.MapHttpRoute("DefaultApiRoute", 
           "api/{controller}/{id}", 
           new { id = RouteParameter.Optional }); 



     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 
} 

私はこのルーティングをコメントするとき、すべてうまくいきます。それが今で正常に動作している

+1

をし、問題が何ですか?コードを実行するとどうなりますか? –

+0

@MarekMusielak:問題は私のアクションメソッドが呼び出されていない、私はこのエラーが発生しています:リソースを読み込めませんでした:サーバが404のステータス(見つかりません)で応答しました –

+0

あなたは 'ComponentsController'また、このアクション名をjavascriptで使用する場合は、アクション呼び出しの名前を 'public ActionResult StoreSearchResults()'に変更する必要があります。 –

答えて

0

、私が何かない「API」で開始する私のルーティングを変更するので、私は、私が呼び出すことができた、mywebapi/{controller}/{action}/{id}になるこのapi/{controller}/{action}/{id}を変更:/api/sitecore/components/StoreSearchResultsPartial