2016-06-07 32 views
1

我已经插入如下一个web.config键:C#变量加载标签的.aspx

<add key="WebInstance" value="/testApp"/> 

当我打电话给我的Site.Master

<link rel="stylesheet" href="<%= WebInstance%>/themes/bs3/css/bootstrap.min.css" /> 

在我Site.Master.cs

private string _webInstance = ConfigurationManager.AppSettings["WebInstance"] 

public string WebInstance { get { return _webInstance ; }} 

Site.Master中的第一个引用完美地工作。例如:

<link rel="stylesheet" href="/testApp/themes/bs3/css/bootstrap.min.css" /> 

但在其他页面中,它引用了完整标签。

举例来说,当我在浏览器功能做inspect element,我看到我的<head></head>标签是这些:

<link rel="stylesheet" href="<%= WebInstance %>/themes/bs3/css/bootstrap.min.css" /> 

我也有拿到钥匙在我ascx.cs

的功能

为什么只是调用标签而不是获得真正的价值?

UPDATE

的Site.Master和 '其他' 的网页是2分不同的东西,在WebInstance关键是要从web.config文件。

在Site.Master.cs中我有自己的函数调用密钥,其他页面也有各自的函数来调用密钥。

Please take a look at the attached image for better understanding.

再次更新

我已经找到了答案,这一切,我对我的<Head></Head>其他页面标签有runat="server",删除它解决了这个问题。无论如何;)

+0

'Site.Master'不是一个页面,它是一个母版页,你不能自己打开它。你能解释一下你的意思吗?“Site.Master中的第一个引用完美地工作。”? – Andrei

+0

我的意思是,那些从Site继承的页面。Master能够基于密钥正确引用样式页面,但对于其他一些页面,当我做同样的事情时,它会将'<%= WebInstance%>'显示为物理路径,而不是将其转换为密钥我想要。 – NewbieCoder

+0

这些其他页面和工作正常的页面有什么不同? – Andrei

回答

1

您的其他网页不能直接在其母版页中引用代码隐藏。 您可以将相同的属性添加到您的单个页面,但会重复。
虽然我不是静态类的大风扇,在这种情况下,它可能是很好的妥协:

public static class SiteSettings 
{ 
    public string WebInstance 
    { 
     get { return ConfigurationManager.AppSettings["WebInstance"];}} 
    } 
} 

然后在.aspx,参考SiteSettings.WebInstance

一些开发人员将制作一个基页,其他页面继承并在其中放置通用属性。这可以工作,但我会用它作为最后的手段。迟早你会想要一些基本页面的行为,而不是其他的,或者你必须对网站进行一些广泛的改变,这会变成一个很大的痛苦。