如何在不同的c#和javascript之间传递数据

时间:2014-07-24 11:52:54

标签: c# javascript jquery html asp.net

我有一个带div的ascx页面,当点击div时它会调用JS函数并发送一个int

// HTML

<div style="float: right; margin-right: 150px;" class="innerDivStyle"
onclick="userStartExtend(2)">        
        <h1 style="margin-top: 50px">Product</h1>
    </div>

// JavaScript函数

 function userStartExtend(num) {}

我需要在c#(文件/页面/代码)中使用来自userStartExtend函数的num。我想过查询字符串 - 在javascript代码中设置并进入c#(可能吗?)。还有其他想法吗? 为了清楚起见:c#代码和javascript代码不共享同一页面。

3 个答案:

答案 0 :(得分:1)

在他想要将某些内容从Javascript传递给.NET并使用eventHandlers的情况下,通常会做什么,只是不要忘记添加属性runat="server" id="DivId" and event handler OnServerClick="DivHandler".

示例:

<div runat="server" id="DivId" OnServerClick="DivHandler" style="float: right; margin-right: 150px;" class="innerDivStyle" onclick="userStartExtend(2)"  >        
    <h1 style="margin-top: 50px">Product</h1>
</div>

然后在C#侧

public void DivHandler(object sender, EventArgs e)
{
   //here sender is your <div> and e is data about 'click' event.
}

更新OnServerClick似乎无法正常运行。这是解决方法

HTML:

<div runat="server" id="DivId" OnServerClick="testMe('param1')" style="float: right; margin-right: 150px;" class="innerDivStyle" onclick="userStartExtend(2)"  >        
    <h1 style="margin-top: 50px">Product</h1>
</div>

JavaScript的:

function testMe(params) {
    var btnID= '<%=MyButton.ClientID %>';          
    __doPostBack(btnID, params);
}

服务器端Page_Load:

 string parameter = Request["__EVENTARGUMENT"];
 if (parameter == "param1")
     MyButton_Click(sender, e);

答案 1 :(得分:1)

建立div服务器端

<div id="serverSideId" runat="server" />

在你的C#代码中,Page_PreRender应该有这个

int myValue = 2;
serverSideId.OnClientClick = "userStartExtend(" + myValue.ToString() + ")";

答案 2 :(得分:0)

在使用控件中添加隐藏的Field控件

<asp:HiddenField ID="hdnval" runat="server" Value="" Visible="false"> 

更新你的javascript函数

function userStartExtend(num) {
var myHidden=  document.getElementById('<%= hdnval.ClientID %>');

 if(myHidden)
 {
 myHidden.value=num;
 }

}

现在使用可以在

后面的代码中访问此服务器控件