2017-01-19 6 views
1

aspx.csページに画像のパスを含むプロパティがあります。前に、CSSで次のように:私は上の背景画像としてこのパスを設定する必要が設定方法:aspx.csページのコードからCSSスタイルを使用する前に

aspx.csページで私のプロパティ名は次のとおりです。FirstLinkIcon

今.aspxのページに私がしようとしています:

<style> 
    .m-quick-links ul li a:before { 
     background-image: url('<%=FirstLinkIcon%>'); 
     background-position: 0 -4164px; 
    } 
</style> 

しかし、<%=%>をCSSで使用しているため、ページをレンダリングする際にエラーが発生しています。

私はまた、このように背後にあるコードからこのスタイルを設定しようとしました:

firstLinkUrl.Style.Add("background-image", FirstLinkIcon); 

が、それはのためのアンカータグに背景画像をない設定します。

前に私が設定する方法を提案して下さいa:コードの背後にあるスタイルの前に?またはそれが後ろのコードから行うことができない場合、私は上記のaspxページのCSSのプロパティのコードの背後にあるプロパティにアクセスできますか?

私はそれについて検索しましたが、質問として掲示するような助けを得られませんでした。

+0

あなたはマスターページか、単純なaspxページを持っていましたか? –

+0

あなたは 'しかし、それは<%= %> cssで使用するためにレンダリングページにエラーを投げています。私はそれをテストして問題なく動作します。あなたのシナリオについてもっと説明すれば、私は 'LiteralControl'の使い方よりも簡単にする方法を手助けすることができます –

+0

私はマスターページも持っていますが、特定のascxページだけでこのスタイルが必要です。私は私のascxページのWeb部分を持っているので、私は<%= %>を私のascxページのスタイルタグの内側に使用しています。そして、私のWebパーツは<%= =>キーワードのために構文エラーを読み込んでいません。 @ S.Serp –

答えて

0

最終的に私は自分の問題を解決したことを研究した。このため、私はLiteralControlのオブジェクトを作成し、その後、スタイル・タグを、文字列ビルダーを使用して文字列として作成しました。これは、LiteralControlのTextプロパティをスタイル・タグstringの上に初期化し、最後にLiteralControlをページ・ヘッダーに追加しました。

ページヘッダーにプロパティ値を含む生成されたスタイルタグがレンダリングされ、レンダリングされたスタイルがページに適用されます。以下は、私が背後にあるコードで使用されるコードです:

System.Web.UI.LiteralControl ltr = new System.Web.UI.LiteralControl(); 
StringBuilder sb = new StringBuilder(); 
sb.Append("<style type=\"text/css\" rel=\"stylesheet\"> .m-quick-links ul li a:before { background-image: url("); 
sb.Append(FirstLinkIcon); //here i am appending property value in css style 
sb.Append(") !important; } </style>"); 
ltr.Text = sb.ToString(); 
this.Page.Header.Controls.Add(ltr); 

このから私のページのヘッダーにスタイルタグをレンダリングされる次のとおりです。私はstyle<%=...%>で使用した簡単なテストされ、それが動作することを確認

<style type="text/css" rel="stylesheet"> .m-quick-links ul li a:before { background-image: url(http://localhost:8082/assets/img/sprites/global-se8a7877705.png) !important; } </style> 
+0

あなたは 'LiteralControl'の代わりに' HtmlGenericControl style = new HtmlGenericControl( "style"); 'を直接使用することもできます –

0

ASP.NETについて忘れてしまったことがない限り、<style>要素を直接変更することなく、実行時に擬似要素について何かを変更することはできません。代わりに非擬似要素内に必要なデータやロジックを含めることをお勧めします。

0

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl1.ascx.cs" Inherits="TestWebForm1.UserControl1" %> 
<style> 
    .class1:before { content:'<%=getContent()%>'; color: green; } 
</style> 

<div class="class1" style=" padding:10px; border:1px solid silver; width:300px;"> 
    <span>This is UserControl1:</span><br /> 

    <asp:TextBox runat="server" ID="utxt1" width="100px"></asp:TextBox> 
    <asp:Button runat="server" ID="ubtn1" Text="+" OnClick="ubtn1_Click" /> 

</div> 

と背後にそのコード:

public partial class UserControl1 : System.Web.UI.UserControl 
{ 

    public string getContent() 
    { 
     return DateTime.Now.ToShortTimeString(); 
    } 
} 

なお、その中にこのようにスタイルのタグを埋め込むことがない良いあなたusercontrol彼らはあなたが彼ら(ない<head>セクションでを使用body内にレンダリングされるように、 )。

この場合、あなたの状況で何が間違っているとお考えですか?

+0

OK ..あなたの回答がありましたらお返事ありがとうございます。それは私のために働いていないとしてKentico CMS。私は、私のアプリケーションのすべてのユーザコントロール(.ascxページ)のkenticoにWeb部分を持っています。したがって、<%= %>この内側のスタイルタグを使用すると、私のWebパーツはレンダリングされず、無効な文字のエラーをスローします。<%= –

関連する問題