我正在尝试动态创建一个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
有解决方法吗?
答案 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