Abhilash.J.A Ответов: 2

Html div внутри цикла foreach проблема в MVC 5


Я работаю над проектом MVC 5, есть просмотр и частичная страница. После того, как с помощью циклов foreach происходит нежелательное пустое
  • Ниже снимка экрана, пожалуйста, найдите изображение.

    [^]

    [^]

    Вот html-вид в браузере, ниже снимка экрана, пожалуйста, найдите изображение.

    [^]

    Что я уже пробовал:

    Я пытался,

    Вот страница просмотра с циклом foreach.

    <div class="board-canvas m-t-20">
                           <div id="board" class="u-fancy-scrollbar js-no-higher-edits js-list-sortable ui-sortable">
                               @foreach (var item in Model)
                               {
                                   <div class="js-list list-wrapper list-padding u-fancy-scrollbar">
                                       <ul class="offered-list">
    
                                           @if (item.idParentService == 0)
                                           {
                                               <li>
                                                   <div class="checkbox ">
                                                       <label class="hd-txt"><input type="checkbox" class="chk_Service" value="@item.idService">@item.ServiceName</label>
                                                   </div>
                                               </li>
                                           }
    
                                           <li>
                                               @Html.Partial("_servicesOffered", item)
                                           </li>
    
                                       </ul>
                                   </div>
                               }
                           </div>
                       </div>
    


    Это частичное представление содержимого' _servicesOffered'.

    @model Rebox.BIL.DataModel.ServiceListTreeBL
    
    @foreach (var item in Model.servicesList)
    {
        <ul class="offered-sub-list">
            @if (item != null)
            {
                <li>
                    <div class="checkbox ">
                        <label><input type="checkbox" class="chk_Service" value="@item.idService">@item.ServiceName</label>
                        @if (item.servicesList.Count > 0)
                        {
                            @Html.Partial("_servicesOffered", item)
                        }
                    </div>
                </li>
            }
        </ul>
    }


    Как я могу это сделать?

    Пожалуйста, помогите мне...

  • F-ES Sitecore

    Этот код не может генерировать html, который вы видите. Кроме того, html, который вы опубликовали, взят из инструментов разработки браузера, это html после запуска любого javascript, поэтому я подозреваю, что у вас где-то есть javascript, который удаляет содержимое тегов li. Просматривайте фактический источник страницы через меню, а не с помощью F12.

    Bryian Tan

    Вы отлаживали, чтобы проверить, есть ли какой-либо элемент в объекте модели?

    Abhilash.J.A

    @Bryian Tan : Да! Все объекты модели заполняются данными, а не какими-либо нулевыми ссылками.

    sachin.vishwa90

    Марк он решается

    Abhilash.J.A

    @Sachin.vishwa90 : как Марк может это решить? Я принял твой ответ. Все в порядке?

    2 Ответов

    Рейтинг:
    14

    sachin.vishwa90

    вы снова вызываете то же самое частичное представление в частичном представлении, это ваша желаемая функциональность ?


    Abhilash.J.A

    Привет всем, это была моя логическая ошибка в кодировании c#. Теперь я могу решить эту проблему. Спасибо Вам за то, что все ответили мне.

    Рейтинг:
    0

    Member 11078564

    Я столкнулся с той же проблемой, с нулевым объектом ("on save") после запуска цикла foreach. Я изменил цикл foreach на цикл "for", и проблема исчезла.

    Мой оригинальный код:

    @foreach (var item in Model.ContractorLocationData)
                       {
                           <tr>
                               <td>@Html.DropDownListFor(m => item.AddressType, WebMXT.MVC.Controllers.SystemManagementController.GetBusinessLocationType(), item.AddressType)</td>
                               <td>@Html.EditorFor(m => item.AddressLine1)</td>
                               <td>@Html.EditorFor(m => item.AddressLine2)</td>
                               <td>@Html.EditorFor(m => item.City)</td>
                               <td>@Html.DropDownListFor(m => item.StateCode, WebMXT.MVC.Controllers.SystemManagementController.GetStateCodeDropDown(), item.StateCode)</td>
                               <td>@Html.EditorFor(m => item.ZipCode)</td>
                               <td>@Html.DropDownListFor(m => item.CountryCode, WebMXT.MVC.Controllers.SystemManagementController.GetCountryCodeDropDown(), item.CountryCode, new { style = "max-width: 200px" })</td>
                               <td>@Html.EditorFor(m => item.PhoneNumber)</td>
                               <td>@Html.EditorFor(m => item.CommercialFaxNumber)</td>
                               <td>
                                   @Html.ActionLink(" ", "DeleteLocation",
                                  "SystemManagement",
                                  new { locationSeq = item.ContractorLocationSeq, contractNumber = @Model.CageCode },
                                  new
                                  {
                                      @onclick = "return confirm('Are you sure you want to delete this Location');",
                                      @class = "glyphicon glyphicon-remove"
                                  })
                               </td>
                               <td>@Html.HiddenFor(m => item.ContractorLocationSeq)</td>
                               <td></td>
    
                           </tr>
                       }
    


    Рабочий код:

    @for (int i = 0; i < Model.ContractorLocationData.Count; i++)
      {
          <tr>
              <td>@Html.DropDownListFor(m => m.ContractorLocationData[i].AddressType, WebMXT.MVC.Controllers.SystemManagementController.GetBusinessLocationType(), Model.ContractorLocationData[i].AddressType)</td>
              <td>@Html.EditorFor(m => m.ContractorLocationData[i].AddressLine1)</td>
              <td>@Html.EditorFor(m => m.ContractorLocationData[i].AddressLine2)</td>
              <td>@Html.EditorFor(m => m.ContractorLocationData[i].City)</td>
              <td>@Html.DropDownListFor(m => m.ContractorLocationData[i].StateCode, WebMXT.MVC.Controllers.SystemManagementController.GetStateCodeDropDown(), Model.ContractorLocationData[i].StateCode)</td>
              <td>@Html.EditorFor(m => m.ContractorLocationData[i].ZipCode)</td>
              <td>@Html.DropDownListFor(m => m.ContractorLocationData[i].CountryCode, WebMXT.MVC.Controllers.SystemManagementController.GetCountryCodeDropDown(), Model.ContractorLocationData[i].CountryCode, new { style = "max-width: 200px" })</td>
              <td>@Html.EditorFor(m => m.ContractorLocationData[i].PhoneNumber)</td>
              <td>@Html.EditorFor(m => m.ContractorLocationData[i].CommercialFaxNumber)</td>
              <td>
                  @Html.ActionLink(" ", "DeleteLocation",
                 "SystemManagement",
                 new { locationSeq = Model.ContractorLocationData[i].ContractorLocationSeq, contractNumber = @Model.CageCode },
                 new
                 {
                     @onclick = "return confirm('Are you sure you want to delete this Location');",
                     @class = "glyphicon glyphicon-remove"
                 })
              </td>
              <td>@Html.HiddenFor(m => m.ContractorLocationData[i].ContractorLocationSeq)</td>
          </tr>
      }