【问题标题】:UniversalViewerWithCustomQuery Where Clause using a QueryString ParamUniversalViewerWithCustomQuery Where 子句使用 QueryString 参数
【发布时间】:2018-07-06 21:22:06
【问题描述】:

我想使用页面 URL 中的查询字符串参数通过 UniversalViewerWithCustomQuery webpart 加载页面:

带有查询字符串参数的页面 URL:mysite\home\mypage.aspx?id=3

到目前为止我尝试过的我的内容查询:

SELECT Top 1 ObjectID,Field1,Field2 FROM MyTable where ObjectID = {% 查询字符串.id %}

获取错误:“%”附近的语法不正确。于是我试了一下:

SELECT Top 1 ObjectID,Field1,Field2 FROM MyTable Where ##WHERE##

内容过滤 Where 子句:ObjectID = {% QueryString.id %}

获取错误:属性“wherecondition”中的 SQL 查询无效。

我还尝试仅使用字符串 {% '3' %} 代替 querystring 参数并得到相同的错误。我知道我做错了什么,但不知道是什么......

++++++++++++++++++++++++++++++++++++++++++++++++++ ++

更新 1

我使用数据库对象应用程序将所有 SQL 内容移动到自定义存储过程中。 哪里有如何从我的 UniversalViewerWithCustomQuery 调用存储过程的示例?

更新 2

要打电话,我想我会尝试常规的旧 TSQL 并且它有效:

EXEC Proc_Custom_MyProc_MyProc

但是当我尝试使用参数调用时,我得到了和以前一样的错误!!!

EXEC Proc_Custom_MyProc_MyProc @id = {% '2' %}

【问题讨论】:

  • 请确保您的查询不对 SQL 注入开放;你的例子看起来可能是这样。 owasp.org/index.php/…
  • 感谢您的关注。不是最终版本,从简单开始并逐步完善。

标签: kentico


【解决方案1】:

当您输入宏时,您是否使用输入框左侧的箭头来输入它?您的情况应如下所示:

ObjectId = {% QueryString.GetValue("id", 0) %}

【讨论】:

    【解决方案2】:

    试试下面的查询语法:

    SELECT ##TOPN## ##COLUMNS## FROM MyTable Where ##WHERE##

    从 Web 部件输入参数

    1. 选择前 N 个:1
    2. WHERE 条件:ObjectID={% QueryString.GetValue("id", 0)#%} [或 {%id%}]
    3. 列:ObjectID、Field1、Field2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多