2014-04-12 136 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