Моя функция поиска, кажется, продолжается в бесконечном цикле, каждый раз, когда моя отладка вызывает действие ниже результата действия POST.
В моем Masterpage.cshtml у меня есть следующее действие:
<li>@Html.Action("Search", "Search")</li>
Это часть, которая получает следующую ошибку:
Недостаточно стека для безопасного продолжения выполнения программы. Это может произойти из-за слишком большого количества функций в стеке вызовов или функций в стеке, использующих слишком много места в стеке.
В моем SearchController у меня есть один метод get и post actionresult:
[HttpGet]
public ActionResult Search()
{
return PartialView("SearchFormPartial");
}
Этот возвращает частичное представление со следующим содержимым:
@using (Ajax.BeginForm("Search", "Search", FormMethod.Post,
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST"
}))
{
<div>
@Html.TextBox("query", "", new { @class = "search-query", @placeholder="Search news...", @spellcheck="false"})
<input type="submit" value="Search" />
</div>
}
По сути, это форма с текстовым полем и кнопкой отправки.
Это результат действия http post:
[HttpPost]
public ActionResult Search(string query)
{
if (query != null)
{
try
{
var searchlist = rep.Search(query);
var model = new ItemViewModel()
{
NewsList = new List<NewsViewModel>()
};
foreach (var NewsItems in searchlist)
{
FillProductToModel(model, NewsItems);
}
return View("Searchresults", model);
}
catch (Exception e)
{
// handle exception
}
}
return View("Error");
}
Он возвращает представление с моделью представления, которая содержит элементы, соответствующие запросу.
Когда я его отлаживаю, все работает отлично, но кажется, что все повторяется бесконечно.
Представление результатов поиска выглядит следующим образом:
@model Namespace.ViewModels.ItemViewModel
@if (Model.NewsList.Count == 0)
{
<h3 class="text-error">No items matched your search query!</h3>
}
else
{
foreach (var result in Model.NewsList)
{
// display search results
}
}
Что именно здесь происходит не так, что вызывает этот бесконечный цикл? и как я могу это исправить?
В трассировке стека я нашел эти исключения
[HttpException (0x80004005): Error executing child request for handler
«System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper».]
это исключение кажется повторяющимся