JS里调用C#后台方法如何传参数进去?

JS代码:
function Gethdid(did) {
var a=1;
var s = "<%=CsharpVoid(这里如何把a传进来)%>";
alert(s);
}
C#后台代码:
public string CsharpVoid(string strCC)
{

return strCC;

}

问题就是,在JS调用<%=CsharpVoid(这里如何把a传进来)%>时,如何将var a的值传到里面去用?

通过webBrowser实现C#和javascript互调
实现步骤:
一、新建一个窗体,加入webBrowser控件
控件名:webBrowser1

二、在窗体后台代码加入如下定义
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
...
}

三、加载网页
webBrowser1.Navigate(Application.StartupPath + "/UpDateReport.htm");
webBrowser1.ObjectForScripting = this; //这句必须,不然js不能调用C#

四、调用脚本方法
/// <summary>
/// 脚本方法
/// </summary>
/// <param name="tag">JS函数名|参数1|参数2</param>
/// <returns></returns>
private object EXEC_JS(System.Windows.Forms.WebBrowser webBrowser, string tag)
{
string[] args = tag.Split('|');
if (args.Length == 1)
{
return webBrowser.Document.InvokeScript(args[0], null);
}
else
{
object[] objects = new object[args.Length - 1];
Array.Copy(args, 1, objects, 0, objects.Length);
return webBrowser.Document.InvokeScript(args[0], objects);
}
}

五、C#调用脚本方法例子,可以有返回值
//JS方法
<script language="javascript">
function js_fun(args)
{
alert("我是通过js脚本弹出的。你输入的内容是:"+args);
return "JAVASCRIPT";
}
</script>
//C#代码
object returnvalue = EXEC_JS(webBrowser1, "js_fun|参数字符串");
MessageBox.Show("js方法返回值是:" + returnvalue.ToString());

六、JS调用C#方法的例子
//C#方法
public string Test(string args)
{
return "你输入的是:"+args;
}
//JS代码
<script language="javascript">
window.onload = function()
{
var CS_returnvalue= window.external.Test("aaa");
alert(CS_returnvalue);
}
</script>
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-14
首先CsharpVoid(object obj)只能是obj类型的。
‘<%=CsharpVoid(‘+a+’)%>’;追问

还是不对啊,报这个错:error CS1012: 字符文本中的字符太多;
是不是这里面写得不对?

追答

好的,谢谢

本回答被提问者采纳
第2个回答  2014-05-19
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

方法二:1、函数声明为public
后台代码(把public改成protected也可以)
public string ss()
{
return("a");
}
2、在html里用<%=fucntion()%>可以调用
前台脚本
<script language=javascript>
var a = "<%=ss()%>";
alert(a);
</script>
方法三:1、<script language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</script>
<input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">

方法四:<script language="javascript">
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="你要调用的函数名";
document.form[0].submit();
}
}
</script>

<INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">
<input type="hidden" name="FunName"> 〈!--用来存储你要调用的函数 --〉

在.CS里有:
public Page_OnLoad()
{
if (!Page.IsPost())
{
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
//根据传回来的值决定调用哪个函数
switch(strFunName)
{
case "enter()":
enter() ; //调用该函数
break;
case "其他":
//调用其他函数
break;
default:
//调用默认函数
break;
}
}
}

public void enter()
{
//……比如计算某值
}
相似回答