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.
Und was ist das Problem? Was passiert, wenn Sie Ihren Code ausführen? –
@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) –
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. –