我有一个带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代码不共享同一页面。
答案 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;
}
}
现在使用可以在
后面的代码中访问此服务器控件