Razor helper не хочет работать с массивом int внутри помощника - PullRequest
0 голосов
/ 25 февраля 2020

В CS html я использую помощник, который вызывает ошибку: (Этот помощник находится в App_Code \ GlobalHelpers.cs html)

@helper CreateShowNotesCountDropDown(string itemName, Paging paging)
{
    <div class="dataTables_length" id="dataTable@(itemName)_length">
        <label class="d-flex">
            <div class="d-none d-lg-block">Show</div>
            <select name="dataTable@(itemName)_length" aria-controls="dataTable" class="custom-select custom-select-sm form-control form-control-sm">
                @foreach (int item in new int[] { 5, 10, 25, 50, 100 }) //error happens here
                {
                    if (item == paging.PageItems)
                    {
                        <option value="@item" selected>@item</option>
                    }
                    else
                    {
                        <option value="@item">@item</option>
                    }
                }
            </select>
            <div class="d-none d-sm-block ml-2">notes</div>

        </label>
    </div>
}

Иногда ошибка возникает, когда загружается главная страница , Когда я изменяю код и загружаю страницу - все ок, ошибка исчезает. Но когда я загружаю вторую страницу в модальное окно, используя запрос ajax, и он также использует этот помощник - ошибка происходит всегда.

Пытался создать тестовый проект - там тоже происходит ошибка.

На обеих страницах я вызываю помощника как

@GlobalHelpers.CreateShowNotesCountDropDown("ItemName", new Paging {Items=20, Page=1, PageItems=10})

Если я отправляю ноль вместо new Paging{...} и меняю код помощника как if (item == paging?.PageItems), ничего не меняется

Обновление:

Исключение:

Система. Net .WebException: 'Запрос был прерван: Соединение было неожиданно закрыто.'

Трассировка стека:

in System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
   in System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size)
   in System.IO.BinaryWriter.Write(Int32 value)
   in Microsoft.WebTools.BrowserLink.Runtime.Tracing.MappingDataWriter.WriteBeginContext(Int32 sourceStartPosition, Int32 sourceLength, Boolean isLiteral, String sourceFilePath, Int32 renderedOutputIndex, Int32 renderedPosition)
   in Microsoft.WebTools.BrowserLink.Runtime.Tracing.DataDispatchExecutionListener.BeginContext(PageExecutionContext context)
   in CallSite.Target(Closure , CallSite , Object , Object )
   in System.Web.WebPages.Instrumentation.PageExecutionListenerAdapter.BeginContext(PageExecutionContextAdapter context)
   in System.Web.WebPages.Instrumentation.InstrumentationService.BeginContext(HttpContextBase context, String virtualPath, TextWriter writer, Int32 startPosition, Int32 length, Boolean isLiteral)
   in System.Web.WebPages.HelperPage.BeginContext(TextWriter writer, String virtualPath, Int32 startPosition, Int32 length, Boolean isLiteral)
   in ASP.GlobalHelpers.<>c__DisplayClass2_0.<CreateShowNotesCountDropDown>b__0(TextWriter __razor_helper_writer) in c:\VladimirK\MyProg\MyWork\20181203_ProjectMVC\2019_07_24_SrvDiscount\WebUI\App_Code\GlobalHelpers.cshtml:line 47
   in System.Web.WebPages.HelperResult.WriteTo(TextWriter writer)
   in System.Web.WebPages.WebPageBase.Write(HelperResult result)
   in ASP._Page_Views_Scales_PartialScales_cshtml.Execute() in c:\VladimirK\MyProg\MyWork\20181203_ProjectMVC\2019_07_24_SrvDiscount\WebUI\Views\Scales\PartialScales.cshtml:line 17
   in System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   in System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   in System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   in System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   in System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   in System.Web.Mvc.HtmlHelper.RenderPartialInternal(String partialViewName, ViewDataDictionary viewData, Object model, TextWriter writer, ViewEngineCollection viewEngineCollection)
   in System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper htmlHelper, String partialViewName)
   in ASP._Page_Views_Scales_Index_cshtml.Execute() in c:\VladimirK\MyProg\MyWork\20181203_ProjectMVC\2019_07_24_SrvDiscount\WebUI\Views\Scales\Index.cshtml:line 25
   in System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   in System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   in System.Web.WebPages.StartPage.RunPage()
   in System.Web.WebPages.StartPage.ExecutePageHierarchy()
   in System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   in System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance)
   in System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer)
   in System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   in System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
   in System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   in System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)

В Ошибка студии 2017 не появляется. Это происходит только в 2019 году Studio

...