我是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。变量没有定义,当我试图调用它。
这可能是我对c#工作原理的理解中的一个根本缺陷,但是有人可以为我提供一个解决方案(举个例子)吗?快把我逼疯了!
这个问题很容易解决。
您在if
和else
子句中分别定义了两次datanewsitem
变量。这意味着它只能在它所属的子句中定义(称为变量的"作用域")
更改为:
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
的类型名称。