Sitecore 7 MVC 4 & Ajax Call

Я использую Sitecore 7.1 и проект MVC 4.

Я пытаюсь создать окно поиска, которое будет искать новости в корзине и возвращать результат в виде JSON.

Поэтому я прочитал это сообщение в блоге: http://keeplearningandsharing.wordpress.com/2013/12/13/sitecore-mvc-with-ajax/

и попробуйте сделать то же самое, но это не работает.

Что я сделал:

1) Я создал контроллер с именем NewsOverviewController, где я положил два метода

ActionResult Start() (HttpGet) which return my view with the searchbox
JsonResult Starts(InpurtParams) which perform the search

2) В sitecore я создал свой рендеринг контроллера и добавил к нему начало действия.

3) я регистрирую новый маршрут в RouteConfig.cs (я поставил его до маршрута sitecore и после, ничего не менял)

  routes.MapRoute(
          name: "search",
          url: "api/NewsOverview/{action}/{id}",
          defaults: new { controller = "NewsOverview", action = "Starts", id = UrlParameter.Optional }
        );

4) Я поставил следующий код на мой взгляд:

<script>
function getSearchResult() {
    var inputparams = {};
    inputparams.SearchTerm = document.getElementById("searchTerm").value;

    try {
        $.getJSON("/api/NewsOverview/starts", inputparams, displaySearchResult);
    }
    catch (ex) {
        alert("Error : " + ex.message);
    }
}

function displaySearchResult(data) {
    $.each(data, function (i, result) {
        $("#searchresult").append(result.Name + " - " + result.Url + "<br/>");
    });

};
</script>

<div>
    <input type="text" name="searchTerm" id="searchTerm" value="test"/>
    <input type="button" onclick="getSearchResult();"/>
    <div id="searchresult"></div>
</div>

Моя проблема, когда я пытаюсь использовать поиск: он не нашел URL (404 (страница не найдена)): {host}/api/NewsOverview/start?SearchTerm=test

Я довольно новичок в MVC, поэтому я скучаю по чему-то...

2 ответа

Хорошо...

Я нашел проблему, прочитав еще два раза пост от Джона Уэста;)

http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2012/06/Use-JSON-and-MVC-to-Retrieve-Item-Data-with-the-Sitecore-ASPNET-CMS.aspx

RegisterRoutes.cs в App_Start не регистрирует маршруты, но вы должны зарегистрировать свои маршруты через конвейеры.

Мы регистрируем маршруты в событии Application_Start, а не в каких-либо конвейерах. Это хорошо работает для нас.

  protected void Application_Start()
  {
     RegisterRoutes(RouteTable.Routes);
  }

  private void RegisterRoutes(RouteCollection routes)
  {
    routes.MapRoute("NameOfRoute", "Path To Use from Ajax", new { controller = "Controller Class,Assembly", action = "Name Of Method On Controller" });
  }
Другие вопросы по тегам