0

次のように、マスターページでAppSettingsを使用してasp:ImageButtonのImageUrlを表示しようとしています。

 View.Master:
 ....
 <asp:ImageButton ID="aspShowHideButton" ImageUrl='<%# System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString()%>images/arrowUpButton.gif' runat="server" />

残念ながら、これをブラウザでプルアップすると、レンダリングされるコードは次のようになります。

 <input type="image" name="ctl00$ctl00$aspContentMain$aspShowHideButton" id="aspContentMain_aspShowHideButton" onmouseover="ShowHideButtonMouseOver()" onmouseout="ShowHideButtonMouseOut()" src="../%3C%25#%20System.Configuration.ConfigurationManager.AppSettings(%22HomeDirectory%22).ToString()%25%3Eimages/arrowUpButton.gif" />

つまり、ImageUrlを文字通り取得していますが、キーの値を取得する必要があります。

  ...
  <appSettings>
        ....
        <add key="HomeDirectory" value="/" />
        ....

「ToString()」関数を削除して、System.Configuration ....ステートメントの前にある「#」と「$」を試しました。また、次を使用して、これをPage_Load関数で機能させることを試みました。

 Protected Sub Page_Load(....)
    If Not IsNothing(Master.FindControl("aspShowHideButton")) Then
       Dim ShowHideButton As ImageButton = Master.FindControl("aspShowHideButton")
       ShowHideButton.ImageUrl = System.Configuration.ConfigurationManager.AppSettings("HomeDirectory") + "images/arrowUpButton.gif"
    End If

しかし、それもうまくいかなかったようです。探していたコントロール(aspShowHideButtonなど)が見つからなかったためだと思います。

基本的に、web.configファイルにキーと値のペアを入れて画像の場所を変更できるようにしたいのですが、マスターページのImageButton:ImageUrlでこのキーと値のペアを使用できるようにしたいのですが、これはかなり人気のあることのようです。どんなアドバイス、方向性もありがたいです!

ありがとう!

4

2 に答える 2

2

server タグで appsettings を使用するには、次の構文を使用します。

<%$ AppSettings:HomeDirectory %>

ただし、ImageUrl のサフィックスを連結することはできません。asp.net サーバー コントロールでホーム ディレクトリを参照する場合は、~ でうまくいくことに注意してください。

 <asp:ImageButton ID="aspShowHideButton" ImageUrl="~/images/arrowUpButton.gif" runat="server"/>

簡単な解決策

Page_Load イベントなど、サーバー側のコードで ImageUrl プロパティを初期化します。そこでは、必要なサーバー コードを使用できます。

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
       this.aspShowHideButton.ImageUrl = System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString() + "images/arrowUpButton.gif";
    }
}

このような連結を ImageButton タグで直接定義する必要がある場合は、Code Expression Builder を使用する必要がありますそれについてはこちらをお読みください

Code Expression Builder を使用すると、ImageButton タグでこの種の構文を使用できます。

ImageUrl="<%$ Code: System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString() + "images/arrowUpButton.gif" %>"
于 2012-04-11T19:04:42.413 に答える
1

これを試すことができます:

<asp:ImageButton runat="server" ImageUrl="<%$ AppSettings:FullPath %>images/image001.jpg" ></asp:ImageButton>

(または)これが機能するための小さな回避策があります:

Web.Config:

<appSettings> 
<add key="testKey" value="images/up.gif" />
</appSettings>  

画像ボタンを追加します。

<asp:ImageButton ID="ImageButton1" runat="server" />

コードビハインドから、次のように呼び出すことができます。

 protected void Page_Load(object sender, EventArgs e)
    {
        this.ImageButton1.ImageUrl = ConfigurationManager.AppSettings["testKey"];
    }
于 2012-04-11T19:08:23.650 に答える