从asp:ListItem访问web配置值

时间:2014-04-02 18:40:34

标签: asp.net

我正在尝试将存储在Web配置中的值打印为列表项的文本。

            <asp:ListItem  Enabled="true" Selected="true" Text="Web Only - <%$ AppSettings:SubscriptionPrice %>"
                Value="web" />

会给我:仅限网络 - &lt;%$ AppSettings:SubscriptionPrice%&gt;

但是,如果我删除仅限Web的文本并执行此操作:

            <asp:ListItem  Enabled="true" Selected="true" Text="<%$ AppSettings:SubscriptionPrice %>"
                Value="web" />

我会得到所需的变量。有没有办法从我的appsettings中获取文本和值?

3 个答案:

答案 0 :(得分:0)

你不能轻易地内联。您的选择是:

  1. 在AppSettings中设置完整值。 (易)
  2. 从后面的代码设置值。 (易)
  3. 最后,如果您想要使用ASPX并且其他任何内容都不可接受,那么您需要编写CodeExpressionBuilder以便提供自定义代码,如下所示:(可能是一种过度杀伤力)
  4. 这是代码表达式构建器

    namespace Funky
    {
        [System.Web.Compilation.ExpressionPrefix("Code")]
        public class CodeExpressionBuilder : System.Web.Compilation.ExpressionBuilder
        {
            public override System.CodeDom.CodeExpression GetCodeExpression(BoundPropertyEntry entry,
               object parsedData, System.Web.Compilation.ExpressionBuilderContext context)
            {
                return new System.CodeDom.CodeSnippetExpression(entry.Expression);
            }
        }
    }
    

    添加此web.config条目

      <compilation debug="true" targetFramework="4.5">
        <expressionBuilders>
          <add expressionPrefix="MyCode" type="Funky.CodeExpressionBuilder"/>
        </expressionBuilders>
      </compilation>
    

    最后使用代码表达式如下:

    <asp:ListItem  Enabled="true" Selected="true" Text='<%$ MyCode: "Web Only - " + ConfigurationManager.AppSettings["SubscriptionPrice"]  %>' Value="web" />
    

答案 1 :(得分:0)

我不确定您是否可以在页面上执行此操作,但您可以在代码文件中执行此操作:

ListItem item = new ListItem();
item.Text = "Web Only - " +  System.Configuration.ConfigurationManager.AppSettings["SubscriptionPrice"];
item.Value = "web";
item.Selected = true;
ListBox1.Items.Add(item);

答案 2 :(得分:0)

对于之前的帖子感到抱歉。

我认为你必须绑定值才是代码。

ddl.Items.Clear()
ddl.Items.Add(New ListItem("Web Only -" & ConfigurationManager.AppSettings("SubscriptionPrice"), "Web"))