2016-04-03 9 views
1

Я хочу вернуть частичный вид в Ajax вызова в Sitecore, я уже использую веб-интерфейсы API, я могу вернуть объект JSON, но я хочу, чтобы вернуть вид с HTML:Возврат Частичный вид с Ajax вызова

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

мой Аякса вызов:

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

      } 
     }); 

Я использую веб-интерфейс для других функций, поэтому я добавил свой маршрут:

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'? также вы должны переименовать свой вызов действия в 'public ActionResult StoreSearchResults()', если вы используете это имя действия в javascript. –

ответ

0

Он теперь работает нормально, я изменил маршрут, чтобы начать с чем-то не «апи», поэтому я изменил это api/{controller}/{action}/{id} быть mywebapi/{controller}/{action}/{id}, то я был в состоянии назвать: /api/sitecore/components/StoreSearchResultsPartial