2013-03-24 39 views
0

我是C#Razor的新手,我想運行一個非常簡單的過程 - 本質上我想運行一個新聞頁面。如果頁面鏈接包含一個ID,我想要的網頁對查詢該值,例如DB:運行db查詢如果查詢字符串不爲空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語句中執行查詢

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");} 

但是,編譯失敗告訴我datanewsitem變量不是def當我試圖打電話給它

這可能是我對C#工作原理的一個基本缺陷,但任何人都可以爲我提供一個解決方案(舉例)我正在嘗試做什麼?這讓我瘋狂!

回答

0

這有一個簡單的修復。

您正在定義datanewsitem變量兩次,每次在您的ifelse子句中都有一次。這意味着不僅是它屬於條款中定義

變化到(被稱爲變量的「範圍」。):

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

謝謝你的快速反應安 - 我已經添加datanewsitem作爲一個字符串和移動NewSID的出IF語句(得到它編譯過去的IF statetemnt其中),但我仍然得到以下錯誤: >「字符串'不包含'Text'的定義,並且沒有可以找到接受'string'類型的第一個參數的擴展方法'Text'(你缺少using指令還是程序集引用?) – Acteon 2013-03-24 12:04:23

+0

這聽起來好像在某個點你有一個字符串變量,並試圖訪問其「Text」屬性。但是,正如它所說的,'string'沒有'Text'屬性或方法。你發佈的代碼並沒有顯示你訪問任何東西的'.Text',但這就是我看的地方:你訪問'.Text'的任何地方。 – 2013-03-24 12:41:47

+0

該項目是datanewsitem.Text,它在查詢中被訪問。 – Acteon 2013-03-24 13:04:43