使用AppSettings键在主页面上的ImageButton中设置ImageUrl

时间:2012-04-11 18:47:07

标签: asp.net master-pages imagebutton

我正在尝试在我的母版页中使用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 on my母版页,这似乎是一个非常受欢迎的事情。任何建议,指示,都表示赞赏!

谢谢!

2 个答案:

答案 0 :(得分:1)

要在服务器标记中使用appsettings,请使用以下语法:

<%$ AppSettings:HomeDirectory %>

但是你将无法连接ImageUrl的sufix。请注意,如果你想在asp.net服务器控件中引用主目录,〜就可以了。

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

简单的解决方案

在服务器端代码上初始化ImageUrl属性,比如说Page_Load事件。在那里,您将能够使用您想要的任何服务器代码。

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

现在,如果您确实需要直接在ImageButton标记中定义这种连接,则需要使用代码表达式生成器。 Read about that here

使用Code Expression Builder,您将能够在ImageButton标记中使用这种语法:

ImageUrl="<%$ Code: System.Configuration.ConfigurationManager.AppSettings("HomeDirectory").ToString() + "images/arrowUpButton.gif" %>"

答案 1 :(得分: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"];
    }