0

我是 C# Razor 的新手,我想运行一个非常简单的过程——本质上我想运行一个新闻页面。如果页面链接包含一个 ID,我希望页面根据该值查询 db,例如:

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两次变量,每次一次。这意味着它只在它所属的子句中定义(称为变量的“范围”。) 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");}

...myNewsType无论类型名称是datanewsitem.

于 2013-03-24T11:42:56.150 回答