#c# #asp.net-mvc
Вопрос:
Я получаю эту ошибку, я считаю, что это потому, что у меня Html.RenderAction();
на домашней странице один два много. Вдобавок @Html.Partial()
ко всему, мой сайт в порядке, если я удалю последний, который я вставил. Который выводит список рабочих часов из таблицы. У меня есть 2 в нижнем колонтитуле, чтобы показать последние сообщения и часы. Нижний колонтитул находится на неполной странице. В общей сложности есть Login Partial
, Cart Summary -- RenderAction
, и Footer Partial
на главной странице макета плюс, конечно RenderBody()
. На странице индекса до сих пор было 2 частичных файла, и я планировал использовать больше. Все они имеют модели к таблицам, прикрепленным к ним из таблиц. Я получаю ошибку при частичном входе в систему, а иногда и в сообщениях в блоге. Если я прокомментирую тот, который я только что сделал, он отлично работает. И переход на саму страницу работает без ошибок. Сначала у меня была частичная страница в общей папке, и она просто не отображается. Я сделал все это,
public ActionResult _Hours()
{
var hrs = db.OperatingHours.OrderBy(x => x.SortOrder).ToList();
return PartialView(hrs);
}
public ActionResult Hours()
{
var hrs = db.OperatingHours.OrderBy(x => x.SortOrder).ToList();
return View(hrs);
}
Есть ли обходной путь для этого?
Комментарии:
1. Исключения Stackoverflow почти всегда связаны с бесконечным циклом-просмотр трассировки стека должен показать шаблон повторяющихся вызовов, мое предположение верно.
2. «Я считаю, что это потому, что у меня есть один или два Html.RenderAction(); на моей домашней странице.» .. нет, это из-за того, как вы написали код. Отладчик-ваш друг. Пройдитесь по ВСЕМУ написанному вами коду. @DavidTansey, безусловно, прав.
3. @DavidTansey абсолютно прав.. В моем представлении есть Foreach и пара утверждений if внутри него. Я изменил его с 2 «если» на «Если еще», и теперь он работает. Я думаю, что мне действительно не нужны были 2 була, только один. Спасибо за вашу помощь.. Я помещу решение в нижней части, чтобы завершить ответ..
Ответ №1:
Проблема заключалась в том, как Дэвид упоминал выше в комментариях, у меня был бесконечный цикл в моем коде представления. Ниже показано, как это было первоначально написано.
<ul class="list-border">
@foreach (var item in Model)
{
<li class="clearfix">
@if (item.SelOpen == true)
{
<span>@if (item.ShowSelect == true)
{<text>Select</text>} @item.Day : </span>
<div class="value pull-right flip"> @item.OpenTime @if (item.ShowBreak == true)
{<text>-</text> @item.BreakTime} - @item.CloseTime </div>
}
@if (item.SelClosed == true)
{
<span> @item.Day : </span>
<div class="value pull-right flip"> Closed </div>
}
</li>
}
</ul>
Ниже приведен код, на который он был изменен, чтобы он работал.
<ul class="list-border">
@foreach (var item in Model)
{
<li class="clearfix">
@if (item.SelOpen == true)
{
<span>@if (item.ShowSelect == true)
{<text>Select</text>} @item.Day : </span>
<div class="value pull-right flip"> @item.OpenTime @if (item.ShowBreak == true)
{<text>-</text> @item.BreakTime} - @item.CloseTime </div>
}
else
{
<span> @item.Day : </span>
<div class="value pull-right flip"> Closed </div>
}
</li>
}
</ul>
Обычно я кодирую описанный выше способ с помощью `if(){ }else{}. И я думаю, что я сделал это и по-другому, но не в цикле foreach.. Урок усвоен.