浏览器在页面完全加载之前添加关闭标签

时间:2020-03-31 00:23:05

标签: c# html blazor blazor-server-side asp.net-blazor

我正在尝试动态创建一个div,该div内可容纳其他3个div,但是,浏览器会在blazor结束注入代码之前自动添加close标签,这很烦人。有办法防止这种情况发生吗?

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 :(得分:0)

不确定为什么要使它过于复杂...

        billingClient.queryPurchases( BillingClient.SkuType.SUBS );

    Purchase.PurchasesResult purchasesResult = billingClient.queryPurchases( BillingClient.SkuType.SUBS );
    if (purchasesResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
        ArrayList<String> skus = new ArrayList<>( Arrays.asList( getResources().getStringArray( R.array.array_subs_sku ) ) );
        for (String sku : skus) {
            setFlag( mContext, sku + KEY_SKU_PURCHASED, false );
        }

        for (Purchase purchase : purchasesResult.getPurchasesList()) {

            setFlag( mContext, purchase.getSku() + KEY_SKU_PURCHASED, true );
            setFlag( mContext, FLAG_SUBSCRIBED, true );
            getIsSubscribed(); // check here if subscription status has changed
            //Log.d( TAG, "onPurchaseHistoryResponse: SUBS" + purchase.getSku() + " / " + getDateStampString( String.valueOf( purchase.getPurchaseTime() / 1000 ) ) + " / State : " + purchase.getPurchaseState() );
        }
    }

除非问题当然不完整

答案 1 :(得分:0)

简单的代码就是好的代码。

告诉编写器何时添加标记,而不是编写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>
}

答案 2 :(得分:-1)

它发送了很多步骤来添加元素,而不是加入单个HTML字符串

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

相关问题