2013-03-24 1 views
0

Я новичок в C# Razor, и я хочу запустить очень простой процесс - по сути, я хочу запустить страницу новостей. Если ссылка страница содержит идентификатор, я хочу, чтобы страница запроса дб против этого значения, например:Запустить db-запрос IF querystring не null C# razor

var newsID = Request.QueryString["ID"];  
var datanewsitem = db.QuerySingle("SELECT * FROM News WHERE [email protected]", newsID); 

И если нет никакого значения, я хочу, чтобы выбрать верхнюю запись в таблице, как и :

var datanewsitem = db.QuerySingle("SELECT Top 1 ID, Title, Date, Text 
FROM news ORDER BY ID desc"); 

Я пытаюсь выполнить проверку, как это:

if (Request.QueryString["ID"] != null) { 
var newsID = Request.QueryString["ID"];  
var datanewsitem = db.QuerySingle("SELECT * FROM News WHERE [email protected]", newsID);   
}else{<br /> 
var datanewsitem = db.QuerySingle("SELECT Top 1 ID, Title, Date, Text, FROM news ORDER BY ID desc");} 

Однако, как только я пытаюсь выполнить запросы из внутри инструкции IF, компилятор не может говорить мне, что datanewsitem .variable не определяет когда я пытаюсь это назвать.

Это, вероятно, фундаментальный недостаток в моем понимании того, как работает C#, но может ли кто-нибудь предложить мне решение (пример) для того, что я пытаюсь сделать? Это сводит меня с ума!

ответ

0

У этого есть легкое исправление.

Вы определяете переменную datanewsitem дважды, каждый раз в своих if и else условиях. Это означает, что только определено в статье он принадлежит

Изменение к (упоминаемый как «сферу» в переменной.): ​​

myNewsType datanewsitem = null; 
if (Request.QueryString["ID"] != null) { 
    newsID = Request.QueryString["ID"];  
    datanewsitem = db.QuerySingle("SELECT * FROM News WHERE [email protected]", newsID);   
}else{<br /> 
    datanewsitem = db.QuerySingle("SELECT Top 1 ID, Title, Date, Text, FROM news ORDER BY ID desc");} 

... где myNewsType является то, что имя типа имеет datanewsitem.

+0

Благодарим за быстрый ответ. Ann - я добавил datanewsitem в качестве строки и переместил newsID из инструкции IF (который получил ее компиляцию за IF statetemnt), но я все еще получаю следующую ошибку: > 'string 'не содержит определения для «Текст» и не может быть найден метод «Текст», принимающий первый аргумент типа «string» (вам не хватает директивы using или ссылки на сборку?) – Acteon

+0

Звучит так, как будто в какой-то момент у вас есть строковая переменная и вы пытаетесь получить доступ к свойству «Text». Однако, как говорится, 'string' не имеет свойства или метода Text. Код, который вы опубликовали, не показывает вам доступ к '.Text' ни о чем, но вот где я буду искать: в любом месте, где вы обращаетесь к' .Text'. –

+0

Элемент datanewsitem.Text, к которому обращается запрос. – Acteon

 Смежные вопросы

  • Нет связанных вопросов^_^