深夜加班,为js 调用后台C#带参数函数,求高手相助!!!!!!
.ASPX文件
function Button4_onclick() {
var b = document.getElementById("MsgManagement_SendMsg1_Label1").innerText;
var a = "<%=LoadTopMenu(b)%>";
alert(a);
}
.CS文件
public string LoadTopMenu(string str)
{
return str+"!!!!!!!!";
}
调用失败~
不带参数的话,没问题,一带参数就不知道怎么回事了~
[解决办法]
如果不行 你可以换一个方式啊
function Button4_onclick() {
//var b = document.getElementById("MsgManagement_SendMsg1_Label1").innerText; //值是哪来的,可以直接放在后台吧。
var a = " <%=LoadTopMenu()%>";
alert(a);
}
.CS文件
public string LoadTopMenu()
{ //此处操作b吧
return str+"!!!!!!!!";
}
[解决办法]
我是这样写的:
aspx:
<script type="text/javascript">
var newplurl="<%=Get_new_pl_url() %>";
</script>
cs:
protected string Get_new_pl_url()
{
return "blog_pl_add.aspx?BlogID=";
}
==================================================
你可以参考改一下。
[解决办法]
<%=LoadTopMenu(b)%> 这里写是有问题的,
如果不好实现的话, 可以换个角度来解决,比如:
.ASPX文件
function Button4_onclick()
{
// 调用CS中的Button1事件,Button1的width设为0,这样就可以隐藏起来,
// 但如果将Visible设为false的话,Button1的事件就不会触发.
document.all('Button1').click();
}
.CS文件
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("<script>alert('" + MsgManagement_SendMsg1_Label1.Text + "!!!!!!!!');</script>");
}
[解决办法]
找了下 <%%>里面的都是后台代码 这个执行在你点击之前 也就是说你没点击 实际上这个方法已经执行过一次了 至于这个<%%>里面的JS参数是不能解析的。
所以要找个变通的方法 13楼的思路是对的 你的这个JS函数可以什么都不写 在后代的alert 。。。
[解决办法]
- C# code
function Button4_onclick() { <% string b = MsgManagement_SendMsg1_Label1.Text ;%> var a = "<%=LoadTopMenu(b) %>"; alert(a); }
[解决办法]
<%%>是解析的后台代码,建议用后台脚本输出
[解决办法]
试试将该参数付给一个隐藏控件的值,然后获取控件的值试试
[解决办法]
[解决办法]
前后台结合可以有多种方式
你的问题是没有理解<%%>是在服务器端做解析的.
[解决办法]
建议还是用ajax
微软已经提供了ajax 框架 可以用来处理前台和后台交互的问题
利用 WebForm_DoCallBack();去调用服务器的代码 还可以取得返回值。
具体的参考 WebForm_DoCallBack的用法!
------解决方案--------------------
js实在前台执行的 这个时候后台代码已经给出了执行的值了
另外 " <%=LoadTopMenu(b)%>"; 里面的b在后台代码肯定没有定义的
[解决办法]
function Button4_onclick() {
var b = document.getElementById("MsgManagement_SendMsg1_Label1").innerText;
var a = <%=LoadTopMenu(b)%>;
alert(a);
}
直接这样,去掉引号
[解决办法]
.net可以前台调用后台方法吗?
是先后台,那一块只是替换成一个值吧
[解决办法]
高手真多啊
[解决办法]
20楼说的对
[解决办法]
你非要在前台调用后台的方法吗?
你不能在后台声明一个public string strA = "";的全局变量,然后页面加载的时候strA = LoadTopMenu(b);
前台直接
function Button4_onclick()
{
var b = document.getElementById("MsgManagement_SendMsg1_Label1").innerText;
var a = " <%=strA%>";
alert(a);
}
不就搞定了!
[解决办法]
还是用ajax比较好
[解决办法]
应该用ajax的方法,你那样不行
[解决办法]
用aiax.dll
[解决办法]
- HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ClientCallback.aspx.cs" Inherits="ClientCallback" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head id="Head1" runat="server"> <title>Client Callback Example</title> <script type="text/ecmascript"> function LookUpStock() { var lb = document.getElementById("ListBox1"); var product = lb.options[lb.selectedIndex].text; CallServer(product, ""); } function ReceiveServerData(rValue) { document.getElementById("ResultsSpan").innerHTML = rValue; } </script></head><body> <form id="form1" runat="server"> <div> <asp:ListBox ID="ListBox1" Runat="server"></asp:ListBox> <br /> <br /> <button type="Button" onclick="LookUpStock()">Look Up Stock</button> <br /> <br /> Items in stock: <span id="ResultsSpan" runat="server"></span> <br /> </div> </form></body></html>
[解决办法]
[解决办法]
b是客户端的
可以用ajax,传递给后台,再把那个写出来
[解决办法]
http://www.cnblogs.com/tengs2000/articles/1177740.html