【问题标题】:Webmatrix: Passing a variable to an SQL queryWebmatrix:将变量传递给 SQL 查询
【发布时间】:2016-01-20 20:51:06
【问题描述】:

我在 Webmatrix (cshtml) 中创建了一个站点,该站点使用循环来显示 SQL CE 表中的数据。我有一个按钮,单击该按钮会运行查询以更新该记录的“已读”状态。 我无法将记录 ID 传递给查询。如果我设置了静态 ID,它可以工作,但是当我将 ID 设为动态时,它看起来正在工作(并且警报显示 ID 正在传递给变量),但记录不会更新。

我的 SQL 是:

    db.Execute("UPDATE MyTable SET Status='F' WHERE MyTable.MyID=@0", myVar);

而我的 HTML 是(@details. 是为循环创建的记录集):

    <form method="post">
    <button type="submit" class="btn btn-xs btn-link pull-right" name="optFlag" onclick="javascript:setStatus(@details.MyID)" ><span class="fa fa-flag"></span></button>
    </form>

我用来传递 ID 为 onclick 的 JS 代码是:

    <script>
     function setStatus(myVar) {
     }
    </script>

请有人告诉我我是否在正确的轨道上,如果是,我做错了什么。如果我完全偏离轨道,实现这一目标的最佳方法是什么?

非常感谢 (PS - 如果这篇文章不符合适当的标准,请通过评论/消息告诉我,以便我可以在没有负分的情况下进行修改)。

【问题讨论】:

  • 如何将 myVar 的值从 setStatus 方法传递到服务器?谁在调用代码db.Execute(
  • 感谢您的回复。该按钮包含在
    中,当它提交时,它会检查条件以执行相关查询。 if(Request.Form["optFlag"] != null) { db.Execute("UPDATE MyTable SET Status='F' WHERE MyTable.MyID=@0", myVar); }

标签: javascript sql forms razor webmatrix-3


【解决方案1】:

您需要重新考虑您的方法。加载页面时,脚本语言(razor C#)将在 javascript 执行之前首先执行。所以不可能让javascript以这种方式执行db调用。

您可以改为让 javascript 加载一个新页面,以查询字符串或通过表单将变量发送到该新页面,然后使用该值通过您的 razor C# 代码执行 db 调用。

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 2021-11-12
    相关资源
    最近更新 更多