2014-04-12 135 views
-1

我有一個javascript函數和c#fanction。我需要從javascript函數調用c#函數,但我不知道如何...從javascript函數調用c#函數

有人可以幫助我嗎?

謝謝!

JavaScript的功能 -

<script type="text/javascript" language="javascript"> 

     function DeleteBook(idimg) { 
// idimg is a string 
      var userConfirm = window.confirm('Are you sure?'); 

      if (userConfirm == true) { 
       control.Sess(idimg);// The line which is colling to the c# function - doesn't work 
       window.open('Delete.aspx'); 
      } 
      else 
       return false; 
     } 
    </script> 

C#的功能 -

protected void Sess(string id) 
    { 
     Session["forDelete"] = id; 
    } 
+0

你可以暴露你想在一個WCF服務調用的方法,並通過AJAX打他們。 – NWard

+0

我不知道該怎麼做... – user3526787

+0

WCF服務是什麼? – user3526787

回答

0

你必須創建類型的輸入提交調用使用HTML你的C#的功能,並使其隱藏。然後創建一個div標籤和使用JavaScript這樣做:

@CSS 
.Hidden { 
    display:none; 
} 

@HTML  
<input type="submit" id="SubmitTag" OnClick="C# Functin" class="Hidden" runat="server" /> 
//if using MVC and Razor 
@using (Html.BeginForm("Action Name", "Controller Name", FormMethod.Post)) { 
    <input type="submit" id="SubmitTag" class="Hidden" /> 
} 

<div id="OnDivClick"> what you want to do in here </div> 

@JS 
$('#OnDivClick').click(function() { 
    $('#SubmitTag').trigger("click"); 
}); 
+0

它必須輸入?我正在使用ImageButton ... – user3526787

+0

無關緊要,無論您想要做什麼,您的JS函數都會調用您的C#方法,只需在圖像按鈕中使用JS函數即可! – Transcendent

1

您可以創建一個Web方法

[WebMethod(EnableSession = true)] 
public static Application GetApplication(int id) 
{ 
} 

,並在JavaScript你那麼做這樣的事情

$.ajax(
     { 
      type: "POST", 
      url: "Applications.aspx/GetApplication", 
      contentType: "application/json; charset=utf-8", 
      data: "{'id':" + id + "}", 
      dataType: "json", 
      success: methodToDoSomethingOnSuccess, 
      error: function (rhq, textStatus, errorThrown) { 
       alert ("some went awry"); 

      } 
     }); 
0

嗯,有是這樣做的方法,但我相信你試圖在Session中爲Delete.aspx頁面保存一些內容來閱讀它。

var form = document.createElement("form"); 
form.setAttribute('method', 'post'); 
form.setAttribute('action', 'Delete.aspx'); 
form.setAttribute('target', '_blank'); 
form.innerHTML = '<input type="hidden" name="forDelete" value="' + idimg + '" />'; 
document.body.appendChild(form); 
form.submit(); 

這個動態創建一個表格,連同idimg將在新窗口中打開Delete.aspx頁面提交它:最簡單的辦法是剛剛發佈的數據。

所有剩下要做的就是去Delete.aspx頁面C#一部分,趕上傳入數據:

string idimg = Request.Form["forDelete"]; 
// Do whatever with it 
Session["forDelete"] = idimg; // If you still want to save it in Session