Разве плохо объявлять переменные страницы в ASP.NET? - PullRequest
1 голос
/ 27 октября 2010

Не уверен, что "переменная страницы" - правильное слово, но я думаю что-то вроде этого:

using System;
.
.
.

namespace whatever
{
    public partial class Submit : Page
    {
       int id;
       protected void Page_Load()
       {
          id = getid();
       }
.
.
.

Очевидно, я буду использовать id в какой-то момент позже (не в PageLoad),Похоже, это было бы лучше, чем проходить через логику, чтобы получить его каждый раз.Есть ли какие-либо недостатки в этом?

Ответы [ 3 ]

2 голосов
/ 27 октября 2010

Совершенно верно и нормально. Возможно, вы захотите объявить свои поля как защищенные, чтобы их можно было использовать из разметки.

1 голос
/ 27 октября 2010

Терминология, которую вы ищете, является областью применения.Нет, здесь нет ничего плохого, и это использование, в частности, кажется очень уместным.Было бы неэффективным повторное получение идентификатора с вашей функцией каждый раз, когда вы ее используете, и область применения предназначена для всего класса.

В общем, область действия должна определяться тем, кому необходимоиспользуйте переменную и, в некоторой степени, как говорит @Y Low, стоимость ее создания.То есть иногда вы можете захотеть объявить что-то вне области действия функции, даже если функция - единственное место, где она используется.

Например, если у вас есть функция, которая вызывается тысячи раз внутри вашего класса (скажем, для форматирования значения в виде строки каким-то особым образом), и ей нужно было бы объявить некоторые переменные внутри, она быболее эффективно объявлять их внешне для функции и уменьшать накладные расходы при каждом вызове функции.

Это может быть TMI.В любом случае, в вашем случае, тем не менее, поскольку вы говорите, что «id» используется в другом месте в области видимости класса, вполне уместно определить его там.

1 голос
/ 27 октября 2010

Логика должна быть такой же, как и у переменных класса, если генерировать id дорого, то сохранить его в переменной страницы.

Если вы не хотите, чтобы она сохранялась в Post Backs, тогдаможно использовать объект Session для сохранения значения.например, Session["key_to_object"] = id;

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