2014-04-27 115 views
0

我看了一些論壇,發現一個更簡單的方法來調用C#方法,但它不工作。我做到了,我活的應用程序,它沒有工作,所以我花了一個新的項目,並使用下面的代碼:麻煩從javascript調用C#方法

ASPX馬克 - 達

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 

</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
    <div> 
    <asp:Button ID="btnMe" runat="server" OnClientClick="jsfun()" /> 
    </div> 
    </form> 
</body> 
</html> 

的Javascript

<script type="text/javascript"> 
     function jdfun() { 
      PageMethods.CSFun(onSucess, onError); 

     } 
     function onSucess(result) { 
      alert(result); 
     } 
     function onSucess(result) { 
      alert(result); 
     } 

    </script> 

C#

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    [WebMethod] 
    public static string CSFun() 
    { 
     string result = "Hey Yeah"; 
     return result; 
    } 
} 

沒有錯誤沒有例外。調試器甚至沒有進入C#代碼。 任何人都可以幫助我。 謝謝。

+3

在考慮其他的東西,是一個你命名的功能'jdfun'並把它稱爲爲'jsfun'或者是錯字實際的代碼?如果是這樣,請嘗試更正它。 –

+0

是的,我想重申@ Mathew'c評論,你檢查你的JavaScript代碼是否正在運行?因爲你已經調用了jsfun()onclientclick並且在javascript中你已經寫了jdfun()函數。這可能是一個可能的原因。 –

+0

是的,我做了..真的很傻,沒有工作 – SMI

回答

0

編輯

我真的不知道這一點,但我讀了一點,固定你的代碼。 這裏是工作的代碼:

JS:

<script type="text/javascript"> 
    function jsfun() { 
     PageMethods.CSFun(onSuccess, onError); 
    } 
    function onSuccess(result) { 
     alert(result); 
    } 

    function onError(result) { 
     alert(result); 
    } 
</script> 

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 

</head> 
<body> 
    <form id="form2" runat="server"> 
     <asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true"></asp:ScriptManager> 
     <div> 
      <asp:Button ID="Button1" runat="server" OnClientClick="jsfun()" /> 
     </div> 
    </form> 
</body> 
</html> 
+0

你想通過http://www.ajaxtutorials.com/quickstart/ajax-tutorial-page-methods-in-asp-net/這裏說它是可能。 – SMI

+0

對不起,我不知道那種方法。我讀了一些並修復了你的代碼。順便說一句,使用這對我來說看起來不太好。您可以使用ajax或表單帖子來做類似的事情。 –

0

基本示例做同樣的

aspx頁面

<form runat="server"> 
    <asp:ScriptManager ID="ScriptManager" runat="server" 
     EnablePageMethods="true" /> 
    <fieldset id="ContactFieldset"> 
     <label> 
      Your Name 
      <input type="text" id="NameTextBox" /></label> 
     <label> 
      Email Address 
      <input type="text" id="EmailTextBox" /></label> 
     <label> 
      Your Message 
      <textarea id="MessageTextBox"></textarea></label> 
     <button onclick="SendForm();"> 
      Send</button> 
    </fieldset> 
</form> 

P年齡法(的.cs)

using System; 
using System.Web.Services; 

public partial class ContactUs : System.Web.UI.Page 
{ 
    [WebMethod] 
    public static void SendForm(string name, string email, string message) 
    { 
     if (string.IsNullOrEmpty(name)) 
     { 
      throw new Exception("You must supply a name."); 
     } 

     if (string.IsNullOrEmpty(email)) 
     { 
      throw new Exception("You must supply an email address."); 
     } 

     if (string.IsNullOrEmpty(message)) 
     { 
      throw new Exception("Please provide a message to send."); 
     } 

     // If we get this far we know that they entered enough data, so 
     // here is where you would send the email or whatever you wanted 
     // to do :) 
    } 
} 

javascript函數

function SendForm() { 
    var name = $get("NameTextBox").value; 
    var email = $get("EmailTextBox").value; 
    var message = $get("MessageTextBox").value; 

    PageMethods.SendForm(name, email, message, 
     OnSucceeded, OnFailed); 
} 

function OnSucceeded() { 
    // Dispaly "thank you." 
    $get("ContactFieldset").innerHTML = "<p>Thank you!</p>"; 
} 

function OnFailed(error) { 
    // Alert user to the error. 
    alert(error.get_message()); 
}