【问题标题】:Run db query IF querystring not null c# razor运行 db query IF 查询字符串不为空 c# razor
【发布时间】:2023-04-09 07:22:01
【问题描述】:

我是 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# 工作原理的理解的一个根本缺陷,但是谁能为我正在尝试做的事情提供一个解决方案(带有示例)?快把我逼疯了!

【问题讨论】:

    标签: asp.net request.querystring


    【解决方案1】:

    这很容易解决。

    您定义了两次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");}
    

    ... 其中myNewsTypedatanewsitem 的任何类型名称。

    【讨论】:

    • 感谢您的快速响应 Ann - 我已将 datanewsitem 添加为字符串并将 newsID 从 IF 语句中移出(使其编译通过 IF statetemnt),但我仍然收到以下错误: >“字符串”不包含“文本”的定义,并且找不到接受“字符串”类型的第一个参数的扩展方法“文本”(您是否缺少 using 指令或程序集引用?)
    • 听起来好像在某些时候你有一个字符串变量并试图访问它的Text 属性。但是,正如它所说,string 没有Text 属性或方法。您发布的代码没有显示您访问 .Text 的任何内容,但这就是我要查看的地方:您访问 .Text 的任何地方。
    • 该项为datanewsitem.Text,在查询中访问。
    • 嗯。听起来好像datanewsitem 是一个字符串,但是您的查询应该根据您发布的内容返回一个记录对象。好吧,如果datanewsitem 是一个字符串,它应该有一个值。价值是什么?你认识吗?
    • 抱歉,发现这个 cmets 部分有点繁琐。代码应为:var dataID = (int) db.QueryValue("SELECT Top 1 ID FROM news ORDER BY ID desc"); var newsID = Request.QueryString["ID"]; if (Request.QueryString["ID"] != null) { newsID = Request.QueryString["ID"]; }else{ newsID = dataID; }
    猜你喜欢
    • 2011-11-23
    • 1970-01-01
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多