【问题标题】:check if c# function is true in javascript function检查javascript函数中的c#函数是否为真
【发布时间】:2026-01-14 01:40:01
【问题描述】:

好的,所以我有一个 C# 函数,如果 sql 表中存在行,则返回 true

System.Web.Services.WebMethod]
        public static bool Check(string ID)
        {
            string connectionString = ConfigurationManager.ConnectionStrings["SimpleDB"].ToString();
            using (SqlConnection con = new SqlConnection(connectionString))
            using (SqlCommand cmd = new SqlCommand(@"
                      IF EXISTS(SELECT 1 FROM Book Where Name = @ID)
                      SELECT 1 ELSE SELECT 0", con))
            {
                con.Open();
                cmd.Parameters.AddWithValue("@ID", ID);
                int result = Convert.ToInt32(cmd.ExecuteScalar());
                return (result == 1);
            }
        }

我还有另一个 Javascript 函数,但似乎这个“PageMethods.Check(btn.id)”语句永远不会正确,即使 sql 表中存在这样的行,所以我猜我没有正确检查它,我想知道问题是否存在是在 javascript 中还是在 C# 中

 function InIt(k ,l)
            {
                for (i = 1; i <= k; i++) {
                    for (j = 1; j <= l; j++) {
                        var btn = document.createElement("BUTTON");
                        btn.id = i + "_" + j;
                        if (PageMethods.Check(btn.id) == true) {
                            //DO SOMETHING
                        }
                        else {//DO SOMETHING ELSE 
                        }

                    }
                }
            }

【问题讨论】:

    标签: c# javascript mysql asp.net sql


    【解决方案1】:

    PageMethods 需要有一个回调函数,如 OnSuccessOnfailure

    使用 OnSuccess 函数检查返回值是否为真

    喜欢这个

    PageMethods.Check(btn.id,OnSuccess,Onfailure);
    

    然后在 OnSuccess 函数中

    function OnSuccess(data)
    {
    if(data)
     // do something
    else
     // do something else
    }
    

    我希望你在你的&lt;asp:ScriptManager&gt; 中设置了EnablePageMethods = true

    【讨论】:

    • 好吧,我设置了我的 ScriptManager,我尝试了另一个没有 OnSuccess 和 Onfailure 的 PageMethods 函数,它们工作可能还有其他问题
    • @Arch_interpreter 你能调用C#函数吗?
    • 在你的c# webmethod上附加一个调试器,看看函数是否被调用,同时检查你的控制台看看有没有js错误
    • 对不起,我是新手,我真的不知道将调试器附加到我的 c# webmethod 是什么意思。
    • @Arch_interpreter 的一些 Basci ASP.net 调试链接:msdn.microsoft.com/en-us/library/w2faa92k.aspx & msdn.microsoft.com/en-us/library/at313d3f.aspx
    【解决方案2】:

    确保您在脚本管理器中将 EnablePageMethods 属性设置为 true。否则 PageMethods 将无法按预期工作。

    <asp:ScriptManager runat="server" EnablePageMethods="true">
    

    通过在我的沙箱中使用您的代码,它按预期工作。

    <asp:ScriptManager runat="server" EnablePageMethods="true"/>
    
    <script type="text/javascript">
            $(document).ready(function () {
                if (PageMethods.Check(10) == true) {
                    alert(true);
                }
                else {
                    alert(false)
                }
            });
        </script>
    
    
    [WebMethod]
    public static bool Check(string ID)
    {
        if (ID.Length > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    

    【讨论】: