js如何调用后台C#函数

amass1024 2009-04-03 02:36:26

<div id="test" onClick="Click()"></div>
<script language="javascript" type="text/javascript">
function Click()
{
//调用后台C#函数LoadInformation
}
</script>



public void LoadInformation()
{
//实现
}

div标签是有后台C#代码动态生成,当点击div标签时会调用JS代码,但是需要用Js代码代用后台C#方法
请教达人有没有好的解决方案,谢谢了
...全文
1146 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangqingxing 2009-04-03
  • 打赏
  • 举报
回复
Page_Load里面进行注册
Ajax.Utility.RegisterTypeForAjax(typeof(BoroughPlatform.SpiecialInvest.类名));

[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public string Save(string address)
{
}

Javascript:
var returnValue = 类名.Save("");

前提是要引用Ajax.dll
llsen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zzxap 的回复:]
C# code
简单介绍下它的用法:

一.AjaxPro的使用


1.在项目中添加引用,浏览找到AjaxPro.2.dll文件

2.在Web.config中的system.web里面写入以下代码
</configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
</system.web>
<//configuration>

3.在加载事件中,加入
AjaxPro.Utility.RegisterTypeForA…
[/Quote]

用ajax,顺便学习
fly_to_sky 2009-04-03
  • 打赏
  • 举报
回复
我赞同五楼的那一种
铁樵 2009-04-03
  • 打赏
  • 举报
回复
给你个例子,没有什么比例子更直观的了。
http://download.csdn.net/source/1172543
yuliangok520 2009-04-03
  • 打赏
  • 举报
回复
在你的click事件里写
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="你要调用的函数名";
document.form[0].submit();
}
再加个隐藏表单
<input type="hidden" name="FunName"> 〈!--用来存储你要调用的函数 --〉
knifewei 2009-04-03
  • 打赏
  • 举报
回复
callback
Luck_cl 2009-04-03
  • 打赏
  • 举报
回复
如果有AJAX的话,那就简单了,JS可以直接调用后台代码。
Hikor 2009-04-03
  • 打赏
  • 举报
回复
div标签是有后台C#代码动态生成,当点击div标签时会调用JS代码,但是需要用Js代码代用后台C#方法

用AJAX
zzxap 2009-04-03
  • 打赏
  • 举报
回复
http://hi.baidu.com/80256498/blog/item/80668501c17f590e1c95831b.html
namhyuk 2009-04-03
  • 打赏
  • 举报
回复
在服务器端.C#的方法里加上

[WebMethod]
public string Get(string s)
{
return s + "abc";
}

然后在aspx上放一个<asp:ScriptManager PageMethod="Enabled"

然后在js里通过

PageMethods.Get($get('控件ID').value, OnSuccess, OnFailed);

function OnSuccess(result)
{
...
}

大概这样,具体我现在懒的找资料了。就是有这种方式。。。
zzxap 2009-04-03
  • 打赏
  • 举报
回复
[CODE=C#]
二,直接调用:
javascript中:<%=后台方法%>
function says()
{
alert("<%=Say()%>");
}
function del()
{
alert("<%=DeleteByID(8)%>");//DeleteByID(8)后台方法名
}


三,采用ICallbackEventHandler回调


//必须声明System.Web.UI.ICallbackEventHandler接口
public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
//定义一个回调的返回值
private string Result;
//定义两个变量,用来接收页面传过来到操作数
private string Num1;
private string Num2;
protected void Page_Load(object sender, EventArgs e)
{

}

/// <summary>
/// 该方法是回调执行的方法,根据参数在这个方法中处理回调的内容,该方法没有返回值
/// </summary>
/// <param name="eventArgument">此参数是从客户端传过来的</param>
public void RaiseCallbackEvent(string eventArgument)
{
//eventArgumeng 为javascript从客户端传递的参数,本例传过来三个参数用“/”分割将每个参数取出存入数组
string[] PagParams = eventArgument.Split('/');
Num1 = PagParams[1];
Num2 = PagParams[2];
//根据第一个参数(所选的操作符),调用不同的执行函数
switch (PagParams[0])
{
case "0":
Result = add(); break;
case "1":
Result = sub(); break;
case "2":
Result = multi(); break;
case "3":
Result = division(); break;
}
}

/// <summary>
/// 该方法是返回回调的结果给客户端
/// </summary>
/// <returns></returns>
public string GetCallbackResult()
{
return Result;
}

//一下四个函数是通过RaiseCallbackEvent方法,调用的回调要执行操作的函数
private string add()
{
double addResult = double.Parse(Num1) + double.Parse(Num2);
return addResult.ToString();
}

private string sub()
{
double addResult = double.Parse(Num1) - double.Parse(Num2);
return addResult.ToString();
}

private string multi()
{
double addResult = double.Parse(Num1) * double.Parse(Num2);
return addResult.ToString();
}

private string division()
{
double addresult = double.Parse(Num1) / double.Parse(Num2);
return addresult.ToString();
}
}

引用:http://203.208.37.104/search?q=cache:QKzWrfgS4XgJ:blog.csdn.net/zhoubohua/archive/2008/09/20/2954245.aspx+ajaxpro+用法&hl=zh-CN&ct=clnk&cd=1&gl=cn&st_usg=ALhdy29Hixm_2y8mlLF1iGn93b4HdOTTaw

[/CODE]
zzxap 2009-04-03
  • 打赏
  • 举报
回复
[code=C#]
简单介绍下它的用法:

一.AjaxPro的使用


1.在项目中添加引用,浏览找到AjaxPro.2.dll文件

2.在Web.config中的system.web里面写入以下代码
</configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
</system.web>
<//configuration>

3.在加载事件中,加入
AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));

4.写的方法都要用
[AjaxPro.AjaxMethod]开头,然后在写方法

5.调用时必须写清楚
命名空间名.类名.方法,例:WebUI._Default.getData();

6.调用可分两中方法(同步调用,异步调用)

//在后台写的无参方法
[AjaxPro.AjaxMethod]
public string getStr()
{
return "hello my friends";
}
//在后台写的有参方法
[AjaxPro.AjaxMethod]
public string getString(string str)
{
return str + "Say: hello my friends";
}

a.同步调用
(1).拖入html控件button
(2).双击,自动显示在.aspx的脚本中
(3).在里面写入你要输入的内容
例:
//------------------同步调用无参-----------
function Button1_onclick()
{
var res=WebUI._Default.getStr();
alert(res.value);
}

//------------------同步调用有参------------
function Button2_onclick() //TextBox1为服务器控件
{
var str=document.getElementById("<%=TextBox1.ClientID%>").value;
var res=WebUI._Default.getStr(str);
alert(res.value);
}


b.异步调用
(1).拖入html控件button
(2).双击,自动显示在.aspx的脚本中
(3).在里面写入你要输入的内容
例:
//-----------------异步调用无参-----------------
function Button3_onclick() {
WebUI._Default.getStr(getStrCallBack);
}
function getStrCallBack(res)
{
alert(res.value);
}
//-----------------异步调用有参-----------------
function Button4_onclick() {
var str=document.getElementById("<%=TextBox1.ClientID %>").value;
WebUI._Default.getString(str,getStringCallBack);
}
function getStringCallBack(res)
{
alert(res.value);
}

7.调用对象

//对象
[AjaxPro.AjaxMethod]
public Class getClass()
{
Class cla = new Class();
cla.C_Id = 100;
cla.C_Name = "34班";
cla.Count = 20;
return cla;
}
//------------------同步调用对象-----------
function Button5_onclick() {
var res=WebUI._Default.getClass().value;
alert("班级编号:"+res.C_Id+"名称:"+res.C_Name+"人数:"+res.Count);
}
//------------------异步调用对象-----------
function Button6_onclick() {
WebUI._Default.getClass(getClassCallBack);
}
function getClassCallBack(clas)
{
var res=clas.value;
alert("班级编号:"+res.C_Id+"名称:"+res.C_Name+"人数:"+res.Count);
}


8.数据集的使用
//方法
[AjaxPro.AjaxMethod]
public DataSet getInfo()
{
return WebUI.GetDataSet.getList();
}

//--------------------异步调用数据集--------------
function Button8_onclick() {
WebUI._Default.getInfo(getDataSetCallBack);
}
function getDataSetCallBack(res)
{
var dataset=res.value;
var strHtml="";
strHtml +='<table style ="border-collapse:collapse ; border-color:Gray ;" border="1px">';
strHtml +=' <tr>';
strHtml +=' <td>学生编号</td>';
strHtml +=' <td>名称</td>';
strHtml +=' <td>年龄</td>';
strHtml +=' </tr>';

for(var i=0;i<dataset.Tables[0].Rows.length;i++)
{
strHtml +=' <tr>';
strHtml +=' <td>'+ dataset.Tables[0].Rows[i].stu_id +'</td>';
strHtml +=' <td>'+ dataset.Tables[0].Rows[i].stu_name +'</td>';
strHtml +=' <td>'+ dataset.Tables[0].Rows[i].stu_age +'</td>';
strHtml +=' </tr>';
}
strHtml +=' </table>';
thedata.innerHTML=strHtml;//thedata是一个<div id="thedata"></div>中的thedata
}



9.验证码的使用

//----------------------验证码的使用(必须采用同步调用)----------------------

//验证码的使用
[AjaxPro.AjaxMethod]
public bool ValidCodeData(string code)
{
return (HttpContext.Current.Session["CheckCode"].ToString()==code);
}

function Button9_onclick() {
var code=document.getElementById("<%=TextBox2.ClientID %>").value;
var bool=WebUI._Default.ValidCodeData(code).value;
if(bool==true)
{
alert("ok");
}else
{
alert("no");
}
}
AjaxPro.dll文件网上很多的,自己下
[/CODE]
amass1024 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Sandy945 的回复:]
如果刷新可以,你在页面加一服务器按钮,宽度为0


JScript code
function Click()
{
//调用后台C#函数LoadInformation
document.getElementById('<%=btnID.ClientID%>').click();
}





在 按钮的点击事件中 调用LoadInformation() 方法
[/Quote]

页面不能刷新,如果刷新,原来页面数据会丢失
itcrazyman 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Sandy945 的回复:]
如果刷新可以,你在页面加一服务器按钮,宽度为0


JScript code
function Click()
{
//调用后台C#函数LoadInformation
document.getElementById('<%=btnID.ClientID%>').click();
}

在 按钮的点击事件中 调用LoadInformation() 方法
[/Quote]
mark up
阿非 2009-04-03
  • 打赏
  • 举报
回复
要是ajax 效果的话,你下一个 ajax.dll

http://hi.baidu.com/kylin451771150/blog/item/01652916778fb51e972b43d1.html

或者 异步请求调用 该页的 webmethod
阿非 2009-04-03
  • 打赏
  • 举报
回复
如果刷新可以,你在页面加一服务器按钮,宽度为0


function Click()
{
//调用后台C#函数LoadInformation
document.getElementById('<%=btnID.ClientID%>').click();
}



在 按钮的点击事件中 调用LoadInformation() 方法

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧