.NET - хранение URL-адресов как глобальных переменных - PullRequest
0 голосов
/ 05 января 2011

Я ищу мнения и / или предложения по этому вопросу.На нашем сайте у нас есть маркированные списки URL-адресов (они не перечислены в том же порядке и не содержат одинаковых точных ссылок друг на друга).Одна ссылка может быть частью ряда маркированных списков, но не может быть указана в том же месте, что и в другом списке.Мне интересно, было бы полезно создать глобальный список 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.

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Если вы собираетесь хранить ссылку, я бы настоятельно рекомендовал хранить их с использованием семантических имен, например:

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> 

Это было бы намного лучшеинкапсулировать концепцию URL.

Что касается списков, вы могли бы легко расширить концепцию, например так:

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; } }
}
0 голосов
/ 06 января 2011

1) Если ссылки отображаются одинаково на разных страницах, вы можете вместо этого иметь пользовательский элемент управления для отображения, а затем использовать атрибут @OutputCache для управления кэшированием отображаемого html.

2) Еслиссылки отображаются по-разному на разных страницах, и если они представляют собой большой процесс, я бы предпочел хранить их в Cache.

0 голосов
/ 05 января 2011

Несколько вопросов для размышления?

a.Какие переменные определяют, какие ссылки входят в список и как часто эти списки создаются?

b.Могут ли ссылки измениться, пока веб-приложение работает?Если да, вы должны сохранить их и прочитать их из таблицы базы данных или простого файла (например, xml).В противном случае, если эти значения времени развертывания мало меняются во время выполнения, считайте их из файла ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...