簡體   English   中英

使用PageMethods從Javascript代碼調用C#布爾函數

[英]Call C# boolean function from Javascript code using PageMethods

好的,所以我有一個循環,可以制作按鈕並設置其ID,我想檢查sql表中是否存在btn.id,然后將按鈕顏色設置為紅色(如果不存在),然后將按鈕顏色設置為綠色,就這么簡單。

 function InIT() {
            for (i = 1; i <= 10; i++) {

                var btn = document.createElement("BUTTON");

                btn.id = i ;                    
                btn.style.cssText = 'height:50px;width:50px;margin:5px;';
               if (PageMethods.Check(btn.id) == true)                                      
                {
                    btn.style.cssText = 'background:red;height:50px;width:50px;margin:5px;';
                }
                else
                {
                    btn.style.cssText = 'background:green;height:50px;width:50px;margin:5px;';
                }

                document.getElementById("div1").appendChild(btn);
                //this is a div where i create the buttons


}

現在,C#函數“ Check”在下面,其中表名是“ Book”,並且此表具有一列“ Name”,因此,如果列名中存在一行,其名稱是傳遞的值,則我希望此函數返回true, ID'。

 [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);
            }
        }

但是問題是,每當我這樣調用Check函數時

if (PageMethods.Check(btn.id) == true)  

但是,這絕不是真的,所有按鈕的ID設置是否均為SQL表的“名稱”列均不設置為綠色。

您可以從JS調用c#代碼,方法如下

http://code.msdn.microsoft.com/How-to-excecute-ac-Method-63380306

改變你的JavaScript函數

   <script type="text/javascript">
        var btn;
        function InIT() {
            debugger;
            for (var i = 1; i <= 10; i++) {

                btn = document.createElement("BUTTON");

                btn.id = i;
                btn.style.cssText = 'height:50px;width:50px;margin:5px;';
                PageMethods.Check(btn.id, OnSuccess, OnFailure);

            }
        }

        function OnSuccess(data) {
            debugger;
            if (data) {
                btn.style.cssText = 'background:red;height:50px;width:50px;margin:5px;';
            }
            else {
                btn.style.cssText = 'background:green;height:50px;width:50px;margin:5px;';
            }

            document.getElementById("div1").appendChild(btn);
        }

        function OnFailure() {
            alert('Error');
        }

    </script>

退貨清單<object>從 C# 方法到 JavaScript PageMethods<div id="text_translate"><p> 我在 ASP.net ASPX 網頁上的 JavaScript 中從 PageMethods 調用返回對象列表時遇到問題。</p><p> 在 C# 方法中,如果我返回單個 object 它可以被 JavaScript 讀取,但是如果我返回一個對象列表,它會返回 500 錯誤。</p><p> 下面是一個返回單個 object 的示例,它可以工作。</p><p> C#</p><pre> [WebMethod] public static Project SingleObject() { Project obj = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); return obj; }</pre><p> JavaScript</p><pre> function getObject() { var object = PageMethods.GetData(onSuccess, onFailed); function onSuccess(data) { console.log(data.thing1); } function onFailed(result) { console.log("Request Failed;"); } }</pre><p> 現在,如果我更改 C# 方法以返回List&lt;Project&gt;而不是單個 object,它會在 chrome web 控制台中返回錯誤 500。</p><p> 下面的例子。</p><p> C#</p><pre> [WebMethod] public static List&lt;Project&gt; MulitpleObjects() { Project obj1 = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); Project obj2 = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); Project obj3 = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); List&lt;Project&gt; objects = new List&lt;Project&gt;() { obj1, obj2, obj3 }; return objects; }</pre><p> JavaScript</p><pre> function getObjects() { var objects = PageMethods.GetData(onSuccess, onFailed); function onSuccess(data) { console.log(data[0].thing1); } function onFailed(result) { console.log("Request Failed;"); } }</pre><p> 如何更改它以能夠返回對象列表?</p></div></object>

[英]Return List<Object> from C# Method to JavaScript PageMethods

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 在不使用腳本管理器或頁面方法的情況下,從asp.net 2.0中的javascript調用服務器端函數 退貨清單<object>從 C# 方法到 JavaScript PageMethods<div id="text_translate"><p> 我在 ASP.net ASPX 網頁上的 JavaScript 中從 PageMethods 調用返回對象列表時遇到問題。</p><p> 在 C# 方法中,如果我返回單個 object 它可以被 JavaScript 讀取,但是如果我返回一個對象列表,它會返回 500 錯誤。</p><p> 下面是一個返回單個 object 的示例,它可以工作。</p><p> C#</p><pre> [WebMethod] public static Project SingleObject() { Project obj = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); return obj; }</pre><p> JavaScript</p><pre> function getObject() { var object = PageMethods.GetData(onSuccess, onFailed); function onSuccess(data) { console.log(data.thing1); } function onFailed(result) { console.log("Request Failed;"); } }</pre><p> 現在,如果我更改 C# 方法以返回List&lt;Project&gt;而不是單個 object,它會在 chrome web 控制台中返回錯誤 500。</p><p> 下面的例子。</p><p> C#</p><pre> [WebMethod] public static List&lt;Project&gt; MulitpleObjects() { Project obj1 = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); Project obj2 = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); Project obj3 = new Project("Thing 1", 10, 10, "Thing 2", new List&lt;string&gt;() { "Thing 3", "Thing 4" }, "thing 5", new List&lt;string&gt;() { "Thing 6", "Thing 7" }, "Thing 8", new List&lt;string&gt;() { "Thing 9", "Thing 10" }); List&lt;Project&gt; objects = new List&lt;Project&gt;() { obj1, obj2, obj3 }; return objects; }</pre><p> JavaScript</p><pre> function getObjects() { var objects = PageMethods.GetData(onSuccess, onFailed); function onSuccess(data) { console.log(data[0].thing1); } function onFailed(result) { console.log("Request Failed;"); } }</pre><p> 如何更改它以能夠返回對象列表?</p></div></object> 如何從c#代碼后面調用javascript函數 無法從后面的C#代碼中調用javascript函數 從JavaScript調用C#函數背后的代碼 如何從JavaScript函數調用C#代碼 如何使用C#從ascx代碼后面調用javascript函數 從Java中的PageMethods成功函數返回結果 從代碼隱藏和代碼隱藏中的腳本調用函數內部調用JavaScript(PageMethods是unfind) 用JavaScript代碼調用C#函數
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM