Return

2016-04-03 16 views
1

ich eine Teilansicht in Ajax-Aufruf in Sitecores zurückkehren möchten, ich bin schon Web-APIs verwenden, kann ich JSON zurückgeben Objekt, aber ich möchte die Ansicht mit HTML zurückzukehren:Return

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

mein ajax-Aufruf:

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) { 

      } 
     }); 

i für andere Funktionalitäten Web-API verwenden, so fügte ich meine Route:

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

Wenn ich dieses Routing kommentiere, funktioniert alles gut.

+1

Und was ist das Problem? Was passiert, wenn Sie Ihren Code ausführen? –

+0

@MarekMusielak: Das Problem ist, dass meine Aktionsmethode nicht aufgerufen wird, ich erhalte diesen Fehler: Ressource konnte nicht geladen werden: Der Server reagierte mit dem Status 404 (nicht gefunden) –

+0

Ist die Aktion im Controller namens 'ComponentsController'? Außerdem sollten Sie Ihren Aktionsaufruf in 'public ActionResult StoreSearchResults()' umbenennen, wenn Sie diesen Aktionsnamen in JavaScript verwenden. –

Antwort

0

Es arbeitet jetzt gut, änderte ich meine Route mit etwas nicht „api“ zu starten, so änderte ich api/{controller}/{action}/{id} diese mywebapi/{controller}/{action}/{id} sein, dann rufen konnte ich: /api/sitecore/components/StoreSearchResultsPartial