0

私は C# Razor を初めて使用し、非常に単純なプロセスを実行したいと考えています。基本的には、ニュース ページを実行したいと考えています。ページ リンクに ID が含まれている場合、そのページでその値に対してデータベースにクエリを実行する必要があります。

var newsID = Request.QueryString["ID"];     
var datanewsitem = db.QuerySingle("SELECT * FROM News WHERE ID=@0", 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 ID=@0", newsID);        
}else{<br />
var datanewsitem = db.QuerySingle("SELECT Top 1 ID, Title, Date, Text, FROM news ORDER BY ID desc");}

ただし、IF ステートメント内からクエリを実行しようとするとすぐに、呼び出しを試みたときに datanewsitem.variable が定義されていないことをコンパイラが通知して失敗します。

これは、C# がどのように機能するかについての私の理解における根本的な欠陥である可能性がありますが、私がやろうとしていることの解決策を (例とともに) 誰かに提供してもらえますか? それは私を夢中にさせています!

4

1 に答える 1

0

これは簡単に修正できます。

and句datanewsitem内でそれぞれ 1 回ずつ、変数を 2 回定義しています。これは、それが属する節内でのみ定義されることを意味します (変数の「スコープ」と呼ばれます)。 ifelse

への変更:

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

... wheremyNewsTypeは の型名が何であれdatanewsitem.

于 2013-03-24T11:42:56.150 に答える