以下のようなページにチェックボックスリストがあります。
<asp:CheckBoxList runat="server" ID="lstFeatures" RepeatDirection="Vertical"></asp:CheckBoxList>
バックエンドコードはそのように見えます。
private void MakeRegionCheckboxes(ReportRegion region, int margin)
{
foreach (ReportRegion subregion in region.childRegions)
{
ListItem item = new ListItem();
item.Text = subregion.Name;
item.Value = subregion.Name;
item.Selected = subregion.DefaultSelection;
item.Attributes.Add("style", "margin-left:" + margin.ToString() + "px");
lstFeatures.Items.Add(item);
MakeRegionCheckboxes(subregion, margin + 30);
}
}
これを空白のプロジェクトで実行すると、style:margin-left:30pxがスパンでレンダリングされるため、「サブリージョン」が適切にインデントされます。
<td>
<span style="margin-left:30px">
<input id="lstFeatures_1" type="checkbox" checked="checked" name="lstFeatures$1">
<label for="lstFeatures_1">Member Information</label>
</span>
</td>
ただし、メインプロジェクトで同じコードを実行すると、スパンがレンダリングされないため、マージンが設定されません。私が得るのはこれだけです。
<td>
<input id="ctl00_pg_BuildReport_lstFeatures_1" type="checkbox" checked="checked" name="ctl00$pg$BuildReport$lstFeatures$1">
<label for="ctl00_pg_BuildReport_lstFeatures_1">Member Information</label>
</td>
両方のプロジェクトで同じフレームワークです(3.5)唯一の違いは、メインプロジェクトにマスターページがあり、いくつかの追加のパネルがあることですが、レンダリングされる際にスパンを停止するのは何でしょうか?どんな助けでも役に立ちます。ありがとう!