以编程方式引用CSS类的哪种方式最可靠?

时间:2015-04-13 16:48:31

标签: html css sharepoint-2010 createchildcontrols

在我的Sharepoint项目中,我在重写的CreateChildControls()方法中动态创建控件。我不知道引用.css文件的两种方法中的哪一种是首选:

protected override void CreateChildControls()
{
    base.CreateChildControls();

    // Way 1
    // from http://sharepoint.stackexchange.com/questions/18652/programmatically-add-js-css-to-pages
    this.Controls.Add(new CssRegistration()
    {
        Name = "/_layouts/ucsc_web_forms.css"
    });

    // Way 2
    HtmlLink cssLink = new HtmlLink();
    cssLink.Attributes.Add("type", "text/css");
    cssLink.Attributes.Add("rel", "stylesheet");
    cssLink.Attributes.Add("href", "/_layouts/duckbilled_platypi_rus.css");
    this.Page.Header.Controls.Add(cssLink);

    boxPayeeName = new TextBox();
    boxPayeeName.CSSClass = "duck-billed-platypi";
    boxPayeeName.Columns = LONG_TEXT_BOX_COL_WIDTH;
}

......但至少应该知道其中一个应该做的伎俩。一种方法比另一种方法更受欢迎吗?

更新

基于经验观察(经验性反击),第二种方式"打破了WebPart,至少是我的。第一个:

this.Controls.Add(new CssRegistration()
{
    Name = "/_layouts/ucsc_web_forms.css"
});

......至少"没有伤害"

1 个答案:

答案 0 :(得分:0)

这适用于我(假设您的项目有一个名为“ucsc_web_forms.css”的CSS文件,其中包含名为“finaff-webform-field-label”和“finaff-webform-field-input”的类):

在“base.CreateChildControls();”之后将以下内容添加到CreateChildControls():

this.Controls.Add(new CssRegistration()
{
    Name = "/_layouts/ucsc_web_forms.css"
});

...然后,创建动态控件就像花花公子一样:

LiteralControl reqDateStr = new LiteralControl("<span class=\"finaff-webform-field-label\">Requester Date:</span>");
. . .
boxPayeeName = new TextBox();
boxPayeeName.CssClass = "finaff-webform-field-input";