Рейтинг:
2
C@dER@j
Это в основном связано с объектом сеанса.
Это происходит потому, что сеанс не имеет ценности, я думаю.
Поэтому сделайте одну вещь, прежде чем обращаться к значению сеанса, проверьте, существует ли сеанс или нет. Если существует, то только назначьте это значение сеанса переменной.
Пример:
Поместите этот код в метод page_Load.Сначала прокомментируйте инициализацию сеанса, а затем проверьте un comment и проверьте это. Надеюсь, вы получите ответ на то, что ищете.
Session["ddlCountry"] = "US";
if (Session["ddlCountry"]!=null)
{
string cntry = Session["ddlCountry"].ToString();
if (cntry == "US")
{
lnkUrl.Text = string.Empty;
if (lnkUrl == null || lnkUrl.Text.Length == 0)
{
lnkUrl.Text = "http://www.google.com";
}
}
}
else
{
lnkUrl.Text="Value not present in Session.";
}
Желаю удачи.
OriginalGriff
Причины, по которым я голосую за одного: нет, это не так.
Попробовать это:
строка s = null;
если (s = = " US")
{
}
Он вообще не будет выдавать исключение - так что не имеет значения, если возвращаемое значение сеанса равно null, это не вызовет его проблем
C@dER@j
Ваша точка зрения верна, код, который вы написали, не будет проходить через исключение ant. Но для того, чтобы преобразовать нулевое значение в строку, используя
"string cntry = Session ["ddlCountry"].Метод toString();"
этот код вызывает исключение. Если вы не получите мой комментарий, то проверьте разницу между функциями .ToString () и Convert.ToString ("") тогда вы узнаете.
Dmytro Bogachev
Позвольте мне не согласиться с вами. Мой ответ аналогичен в сессионной части. И нулевое значение объекта сеанса может быть одной из причин возникновения такой проблемы. Вы можете сравнить с null, как в вашем случае, но вот что происходит в исходном коде:
string s = null; / / Session ["whatever"] is null
s. ToString (); / / и исключение
C@dER@j
Вот что я сказал.если у вас есть null и вы собираетесь преобразовать его в string с помощью .tostring (), то возникнет исключение. Так что если вы проверяете это нулевое значение, если его там нет, то только вы конвертируете с помощью .Метод toString()..
OriginalGriff
Игнорируйте вышесказанное - я готовил кофе и понял, что пропустил "ToString" на сеансе доступа - что делает вас правым, а меня-неправым! Извините...: O
Я исправил голосование до 5 и могу винить только старшеклассника в сочетании с недостатком кофеина. И, конечно, природная глупость.
C@dER@j
Ха-ха-ха-ха сек...Так держать:-)
Рейтинг:
2
OriginalGriff
Почему вы используете свойство объекта, а затем позже проверяете его на null?
lnkUrl.Text = string.Empty;
if (lnkUrl == null || lnkUrl.Text.Length == 0)
Второй текст в любом случае совершенно бесполезен, потому что предыдущая строка косвенно устанавливает длину в ноль в любом случае!
Поменяй его местами:
if (lnkUrl != null)
{
lnkurl.Text = "http://www.google.com";
}
И не пытайтесь задавать свойства нулевых значений!
Rock_Dead
Я хочу установить текст LinkURL следующим образом http://www.google.com"; как вы думаете, это решит задачу?
OriginalGriff
Вы можете установить значение его текстового свойства только в том случае, если lnkURL не является нулевым, то есть если он был установлен на экземпляр объекта где - то.
Если код выдает исключение null reference при попытке доступа к свойству Text, то вам нужно посмотреть на остальную часть вашего кода, чтобы выяснить, почему это значение еще не было установлено. Я не могу, потому что вы не показываете этот код в своем фрагменте.
Итак, используйте отладчик, чтобы "проследить" свой код и выяснить, как вы туда попали!
Rock_Dead
Я попытался с помощью этого кода, если (lnkUrl != нуль)
{
lnkurl.Текст = "http://www.google.com";
}
но все равно выдает ту же ошибку
Rock_Dead
Мой URL-адрес ссылки теперь равен нулю, и я хочу заполнить его каким-то текстом
OriginalGriff
Игнорируйте меня - это совсем не так - это ваш сеанс, как уже было сказано - я пропустил ToString на вашем сеансовом доступе, который будет выдавать исключение, если значение сеанса не было установлено - так что посмотрите, почему это null (и проверьте его, прежде чем пытаться что-либо с ним сделать!)
Rock_Dead
Мое значение сеанса не приходит как null, оно содержит значение, как и ожидалось
OriginalGriff
Как вы проверили?
Rock_Dead
В самом коде во время отладки я вижу там значение
OriginalGriff
И ваша ссылка равна нулю? Итак, вам нужно выяснить, почему переменная link равна null - где она устанавливается?
Вы не можете установить ссылку, пока не установите экземпляр элемента управления link в переменную link!
Рейтинг:
2
Dmytro Bogachev
Проверьте, имеет ли ваш сеанс["ddlCountry"] значение, прежде чем работать с ним. Проверьте, установлен ли ваш lnkUrl в допустимое управление.
Так что код может быть таким:
if(Session["ddlCountry"] != null)
{
var cntry = Session["ddlCountry"].ToString();
if (cntry.Equals("US"))
{
//You cannot use this control, if lnkUrl is null
//Since you're setting lngUrl.Text = string.Empty, it will have
//Text.Length == 0 in all cases; so consider changing your logic.
//Probably like in code below.
if(lnkUrl != null)
{
if(lnkUrl.Text.Length == 0)
{
lnkUrl.Text = "http://www.google.com";
}
}
}
}
Rock_Dead
получение той же ошибки даже с этим кодом
Dmytro Bogachev
Вы пробовали отлаживать? Какова точная линия вашего исключения? В приведенном выше коде есть 2 возможные точки отказа, Session ["ddlCountry"].ToString () - если ToString () по какой-то причине возвращает null (и я не вижу причин для такого поведения) и если lnkUrl.Текст нулевой - это тоже странно.
Rock_Dead
я отладил это же исключение в строке lnkUrl.Текст = "http://www.google.com";
и также я меняю эту строку, т. е. если(lnkUrl != нуль), если(lnkUrl == нуль) как lnkUrl приходит как null
Dmytro Bogachev
Так что ваша проблема не в вышеприведенном коде, это правильно. Покажите, пожалуйста, код, где вы получаете lnkUrl. В основном речь идет об этом контроле.
Rock_Dead
Я не установил текстовое значение в этом Linkurl. это код
<asp: LinkButton ID=" lnkUrl "runat= "server" CssClass= "linkurl" ForeColor= " #006600"
Шрифт-жирный="истинный" шрифт-имен="Вердана" размер шрифта="8рт"&ГТ;
Dmytro Bogachev
Одна из возможных причин - этот элемент управления еще не инициализирован. Что такое событие (событие страницы), в котором у вас есть код, который вызывает исключение?
Rock_Dead
При Загрузке Страницы
Dmytro Bogachev
В вашем вопросе мы кое-что упускаем. Элемент управления должен быть инициализирован уже при загрузке страницы. Может быть, вы используете пользовательские элементы управления, и ваша кнопка ссылки находится в пользовательском элементе управления, может быть, есть какая-то проблема с кэшем, если вы его используете, но в любом случае речь идет не о коде, который вы разместили здесь. Я предлагаю вам открыть новый вопрос с кратким описанием вашей текущей структуры страницы, который спросит, почему lnkUrl равен null во время события Page_Load.
Рейтинг:
1
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Перед чтением Session
, всегда проверяйте наличие null.
if(Session["ddlCountry"] != null)
{
string cntry = Session["ddlCountry"].ToString();
}
Если
Session
ddlCountry
значение отсутствует, оно вызовет "исключение ссылки на объект".
N.Manjula
Я скопировал код но я получаю ошибку недопустимый ключ MAshape даже я вставил ключ тестирования
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Я не получаю. Что ты пытаешься сделать?