我正在寻找关于这个问题的意见和/或建议。在我们的网站上,我们提供了项目符号列表(它们没有按相同的顺序列出,也没有包含相同的链接)。一个链接可能是许多项目符号列表的一部分,但未列在与另一个列表相同的位置。我想知道创建一个全局URL列表然后为每个URL访问这些变量是否有益。这个愚蠢,聪明,还是太多?
示例:
var link001 = "http://www.google.com";
var link002 = "http://www.yahoo.com";
<ul>
<li><a href="<%= link001 %>'>Google</a></li>
<li><a href="<%= link002 %>'>Yahoo</a></li>
etc.
</ul>
我认为全局变量将存储在global.asax中,但我不确定,因为我不熟悉global.asax。
答案 0 :(得分:2)
如果您要存储链接,那么我强烈建议使用语义名称存储它们,如下所示:
var GoogleUrl = "http://www.google.com";
var YahooUrl = "http://www.yahoo.com";
<ul>
<li><a href="<%= link001 %>'>Google</a></li>
<li><a href="<%= link002 %>'>Yahoo</a></li>
etc.
</ul>
然而,更好的解决方案是创建一个带有常量(或只读字段)的静态类,然后可以在代码中访问它们:
public static class Url
{
public const string Google = "http://www.google.com";
public const string Yahoo = "http://www.yahoo.com";
}
这会导致您的网页代码如下所示:
<ul>
<li><a href="<%= Url.Google %>'>Google</a></li>
<li><a href="<%= Url.Yahoo %>'>Yahoo</a></li>
etc.
</ul>
这将是一种更好的方式来封装网址的概念。
对于列表,您可以轻松扩展概念,如下所示:
public static class UrlList
{
public static IEnumerable<string> List1
{
get
{
// Return the first list:
yield return Url.Google;
yield return Url.Yahoo;
}
}
public static IEnumerable<string> List2
{
get
{
// Return the first list:
yield return Url.Yahoo;
yield return Url.Goggle;
}
}
}
当然你可以使用数组来备份属性,但它们是可变的,通常,对于类似的东西,这不是一件好事(另一个选择是仍然将属性公开为IEnumerable<string>
但是使用ReadOnlyCollection<string>
作为支持字段并返回,这将保留不变性:
public static class UrlList
{
///<summary>The backing field for <see cref="List1"/>.</summary>
private static readonly ReadOnlyCollection<string> list1 =
new ReadOnlyCollection<string>(new [] {
Url.Google,
Url.Yahoo,
});
public static IEnumerable<string> List1
{ get { return list1; } }
///<summary>The backing field for <see cref="List2"/>.</summary>
private static readonly ReadOnlyCollection<string> list2 =
new ReadOnlyCollection<string>(new [] {
Url.Yahoo,
Url.Google,
});
public static IEnumerable<string> List2
{ get { return list2; } }
}
答案 1 :(得分:0)
您可以考虑一些问题吗?
一个。确定哪些链接进入列表以及这些列表建立频率的变量是什么?
湾在网络应用程序上线时链接是否可能发生变化?如果是,您应该保留这些并从数据库表或平面文件(如xml)中读取它们。否则,如果这些是在运行时期间变化不大的部署时值,请从资源文件中读取它们。
答案 2 :(得分:0)
1)如果链接在页面之间以相同的方式呈现,您可以使用用户控件来呈现它,然后使用@OutputCache属性来控制呈现的html的缓存。
2)如果链接以不同的方式显示在页面上,如果它们构成一个很大的过程,那么我宁愿将它们存储在Cache中。