如何用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名字"];
}