web.config的javascript问题

时间:2011-04-19 16:46:12

标签: asp.net web-config

尝试使用js和.net访问web.config文件,并获取“error.html?aspxerrorpath = / testing2.aspx”错误页面。

<%@ Page Language="C#" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>

<script type="text/javascript" runat="server">

    function ReadConfigSettings()
    {

       var v1 = '<%= ConfigurationManager.AppSettings["var1"].ToString() %>'
       alert(v1);

    }
</script>

</head>
<body>
    <form id="form1" runat="server">
   <div><asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="ReadConfigSettings()" /></div>
    </form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

如果appSettings部分中没有定义“var1”,您的代码示例将抛出异常。

您可以尝试这样做:

<%= ConfigurationManager.AppSettings["var1"] %>

该语句将处理未定义“var1”的情况。

要定义appSetting,你应该在你的web.config中有这样的东西:

<configuration>
   ...
   <appSettings>
      <add key="var1" value="test" />
   </appSettings>
   ...
</configuration>

答案 1 :(得分:1)

正如rsbarro所解释的那样,由于缺少该设置,您的代码可能会抛出异常。

现在,我不确定你到底想要完成什么。您的帖子标题和代码示例似乎表明您希望在单击按钮时从配置文件中提取一些值。然而,这不是这里发生的事情。

请记住,<% %>之间的任何内容都会在服务器上进行评估。因此,在页面被渲染之前,它将尝试运行该代码并将其嵌入到响应中,如您所示。最后,您将获得嵌入脚本中的静态值。

<script type="text/javascript" runat="server">

    function ReadConfigSettings()
    {

       var v1 = 'MyStaticValue'; //This was rendered on the server
       alert(v1);

    }
</script>

如果你想做更多的事情,那么你必须通过AJAX做到这一点。你有几个选择:

  1. 创建网络服务(.asmxWCF
  2. 使用Page Methods
  3. 使用UpdatePanel