Браузер добавляет закрывающий тег до полной загрузки страницы - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь создать div динамически, который содержит 3 других div внутри, однако браузер автоматически добавляет тег close до того, как Blazor заканчивает внедрение кода, что очень раздражает. Есть ли способ предотвратить это?

int i = 1;

foreach (itemModel item in itemList)
{
  if (i == 1)
  {
    @((MarkupString)"<div>");
  }

  <div></div>

  if (i == 3)
  {
    @((MarkupString)"</div>");
    i = 0;
  }

  i++;
}

желаемый вывод

<div> <- Parent
  <div></div> <- Child
  <div></div> <- Child
  <div></div> <- Child
</div>

фактический вывод

  <div></div> <- Parent
  <div></div> <- Child
  <div></div> <- Child
  <div></div> <- Child

Есть ли обходной путь?

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

Он отправляет много шагов, чтобы добавить элементы, не объединяясь в одну HTML строку

Лог c MarketString больше похож на

document.body.innerHTML="";
var c=document.createElement("container")
c.innerHTML="<div>"
while(c.firstChild)document.body.appendChild(c.firstChild);
alert(document.body.innerHTML)


when you send the "<div>" , it will be auto fixed to a full element in the dom tree immediately. 

later you send "</div>" will take no effect

0 голосов
/ 31 марта 2020

Простой код - это хороший код.

Вместо написания MarkupString, сообщите компилятору, когда добавлять теги. MarkupString следует зарезервировать для визуализации текста, содержащего разметку (обычно неизвестную разметку из базы данных)

@foreach (var item in new List<string>() { "1", "2", "3" })
{
    int i = 0;
    <div>
        <p>parent @item</p>
        @while (i < 3) {
            <div><p>child @i</p></div>
            i++;
        }
    </div>
}
0 голосов
/ 31 марта 2020

Не знаю, почему вы это слишком усложняете ...

<div> <!-- parent -->
@foreach (itemModel item in itemList)
{
   <div></div><!-- child -->
}
</div>

Если, конечно, вопрос не полный

...