[英]Div style in C# code
是否可以將div樣式放入C#標簽控件中? 使用iTextSharp。
var background = new Label
{
Text = "<div style='margin-left: 40px;'>" + "<br/><b><u>" + LabelBackground.Text + "</u></b><br/>" + "<b>" + LabelDoB.Text + "</b>" + LabelDoBFromDb.Text +
"<br/>" + "<b>" + LabelPhone.Text + "</b>" + LabelPhoneFromDb.Text + "<br/>" + "<b>" + LabelEmail.Text + "</b>" +
LabelEmailFromDb.Text + "<br/>" + "<b>" + LabelPosition.Text + "</b>" +
LabelPositionFromDb.Text + "<br/>" + "</div>"
};
我的<br/>
標記有效,但<div>
無效
整個代碼:
//Create Document class object and set its size to letter and give space left, right, Top, Bottom Margin
Document doc = new Document(PageSize.A4, 10, 10, 42, 35);
try
{
PdfWriter.GetInstance(doc, new FileStream("c:\\Test11." + DropDownListDownload.SelectedItem.Text, FileMode.Create));
var sv = new StringWriter();
doc.Open();//Open Document to write
var hTextWriter = new HtmlTextWriter(sv);
var background = new Label
{
Text = "<div style='margin-left: 40px;'>" + "<br/><b><u>" + LabelBackground.Text + "</u></b><br/>" + "<b>" + LabelDoB.Text + "</b>" + LabelDoBFromDb.Text +
"<br/>" + "<b>" + LabelPhone.Text + "</b>" + LabelPhoneFromDb.Text + "<br/>" + "<b>" + LabelEmail.Text + "</b>" +
LabelEmailFromDb.Text + "<br/>" + "<b>" + LabelPosition.Text + "</b>" +
LabelPositionFromDb.Text + "<br/>" + "</div>"
};
background.RenderControl(hTextWriter);
//LANGUAGES
string languages = string.Empty;
var lbLanguages = new Label();
foreach (var vLang in BulletedListLanguages.Items)
{
languages += vLang + "<br/>";
}
lbLanguages.Text = "<br/><b><u>" + LabelLanguages.Text + "</u></b><br/>" + languages;
lbLanguages.RenderControl(hTextWriter);
String strHtml1 = sv.ToString();
var hw = new HTMLWorker(doc);
hw.Parse(new StringReader(strHtml1));
}
finally
{
doc.Close();
}
我認為在這種情況下最好添加asp:Literal
。 因此,Label的默認ASP樣式不會有問題。
您可以將標簽添加到某些控件中(根據需要簽出'literal'標簽),但是,使用CssClass屬性添加類可能會更好。
Label label = new Label();
label.CssClass="class";
label.Text = "My content";
您將<div>
放入標簽中,就語義而言,這是一個壞主意。 我個人要做的是制作一個Panel
標簽,無論如何都會渲染一個<div
>。
即
var background = new Panel();
var text = new Literal
{
Text = "<br/><b><u>" + LabelBackground.Text + "</u></b><br/>" + "<b>" + LabelDoB.Text + "</b>" + LabelDoBFromDb.Text +
"<br/>" + "<b>" + LabelPhone.Text + "</b>" + LabelPhoneFromDb.Text + "<br/>" + "<b>" + LabelEmail.Text + "</b>" +
LabelEmailFromDb.Text + "<br/>" + "<b>" + LabelPosition.Text + "</b>" +
LabelPositionFromDb.Text + "<br/>"
};
background.Controls.Add(text);
background.Attributes["margin-left"] = "40px"; // Preferably, I'd add a class and do this plainly in CSS.
而且,這取決於您的操作方式,但是就代碼的可維護性和設計而言,我會這樣做:
(Java)
<div style="margin-left: 40px">
<br/><b><u><asp:Literal runat="server" ID="DisplayLabelBackground" /></u></b> // etc, but I *definitely* wouldn't use <b> and <u> tags either
</div>
然后,在您的代碼中找到:
DisplayLabelBackground.Text = LabelBackground.Text;
asp:Label渲染一個跨度,它是一個內聯標簽。 因此,您不能將div放在跨度中。 您可以使用runat服務器將其Label替換為簡單的div,並使用InnerHtml或InnerText屬性放置文本
ASPX
<div id="myDiv" runat="server" style="margin-left:40px"></div>
aspx.cs
myDiv.InnerHtml = "..."
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.