为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ASP.Net web.config 键作为查询参数时的问题

使用 ASP.Net web.config 键作为查询参数时的问题

C#
白衣染霜花 2021-11-14 15:54:41
我发现这个问题似乎相关但没有成功解决我的问题:Defining ConnectionString in asp SqlDataSource与此相关的大多数问题都与连接字符串有关。但是,我的问题有点不同。在我的测试场景中,我正在创建一个评论网站。我有两个表:reviews和sites。我正在创建一个页面,允许用户根据登录用户的 ID 查看他们自己的评论。<asp:SqlDataSource ID="ReadReviewDataSource"                    runat="server"                    ConnectionString="<%$ ConnectionStrings:Labor32_ECConnectionString %>"                    SelectCommand="<%="SELECT sites.name                    FROM sites                    INNER JOIN reviews ON sites.id = reviews.site_id                    WHERE reviews.usr_id =" +                   ConfigurationManager.AppSettings["TestUserID"]%>"></asp:SqlDataSource>每当我尝试测试站点时,我都会得到并Parser Error Message: Server tags cannot contain <% ... %> constructs.发现一些结果在其他上下文中讨论了此问题,但其中大多数都将整个连接信息或查询替换为 web.config 键值。在这种情况下,我只想用它替换我的参数。当我按照此处找到的一些指导进行操作时:https : //forums.asp.net/t/1471702.aspx?Using+web+config+settings+in+a+asp+SqlDataSource+我收到一条错误消息,指出“标识符以...开头的太长了。最大长度为 128。” 我试图遵循此页面上的指导:https : //www.sqlservercentral.com/Forums/208737/The-identifier-that-starts-withis-too-long-Maximum-length-is-128但我不是运行存储过程(我想 VS 可能会通过后端的 SP 运行我的 SQL 语句,但我是新手,不熟悉它的工作原理)。任何人都可以提供任何指导吗?
查看完整描述

1 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

您可以尝试以下方法:添加 SelectParameter 和 OnSelecting 事件处理程序。在 OnSelecting 事件处理程序后面的代码中设置 UserId 参数


<asp:SqlDataSource ID="ReadReviewDataSource" 

                   runat="server" 

                   ConnectionString="<%$ ConnectionStrings:Labor32_ECConnectionString %>" 

                   SelectCommand="SELECT sites.name 

                   FROM sites 

                   INNER JOIN reviews ON sites.id = reviews.site_id 

                   WHERE reviews.usr_id = @UserId"

                   OnSelecting="ReadReviewDataSource_Selecting">

          <SelectParameters>  

              <asp:Parameter Name="UserId" />

          </SelectParameters>

</asp:SqlDataSource>

背后的代码:


  protected void ReadReviewDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e)    

    {    

         e.Command.Parameters["@UserId"].Value =  ConfigurationManager.AppSettings["TestUserID"];

    }


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 190 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信