日期:2014-05-18  浏览次数:20528 次

如何用Web.config统一管理页面Url
我尝试将站点页面的Url保存在站点配置中,来避免页面路径调整时要修改多处Url的麻烦。

站点配置
XML code

<appSettings>
<add key="Name" value="asp_app" />
<add key="MasterUrl_Frame" value="~/Frame.master" />
</appSettings>



页面属性中用ExpressionBuilder获取配置的Url
C# code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" MasterPageFile="<%$ AppSettings:MasterUrl_Frame %>" %>


报错如下:
: 生成 (web): “<%$ AppSettings:MasterUrl_Frame %>”不是有效的虚拟路径。

而忽略这里,下面同样方式获取注册跳转链接却正常
C# code

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" MasterPageFile="~/Frame.master" %>

<asp:Content ContentPlaceHolderID="ContentPlaceHolder" runat="server">
    <div>
        <asp:Login ID="lgn1" CreateUserText="注册" CreateUserUrl="<%$ AppSettings: PageUrl_Register %>" runat="server">
        </asp:Login>
    </div>
</asp:Content>




是否在<%@...%>段内不能访问web.config? 还是有其他原因?

求解~~

------解决方案--------------------

用配置文件去管理一下路径是个很好的方法,

凡事出现三次以上要重复写的路径都应该考虑提出来管理

写在config文件中有利于修改,不用重新编辑。。。

读取用ConfigurationManager.AppSettings["Key名字"];
------解决方案--------------------
头部那个 <%@ 
本身就是<%标签内了
------解决方案--------------------

这个事件和Page_Load 事件一样,只是页面没有显示而以,你直接把下面事件复制到Page页面使用就可以了

//页面初始化事件
protected void Page_PreInit(object sender, EventArgs e)
{
ConfigurationManager.AppSettings["Key名字"]; 
}