如何在C#中访问JS变量

时间:2009-09-23 12:42:09

标签: c# asp.net javascript asp.net-mvc

假设我有

<div id="blah">500</div>

(上下文:asp.net aspx页面) 如何允许c#代码访问该值?

<%
    int numberiwant = ###; // Ideally 500
%>

我在想jQuery的一些东西:

<script type="text/javascript">
var value = $('#blah').html();
// Then do some magic and pass to c#?
</script>

有更好的方法吗?

5 个答案:

答案 0 :(得分:4)

使用隐藏的输入框

<input id="hiddenControl" type="hidden" runat="server" />   

使用javascript

将您的值放在输入框中
//call this method before you postback, maybe on form submit
function SetPostbackValues() {
  var hiddenControl = '<%= hiddenControl.ClientID %>';
  document.getElementById(hiddenControl).value = 500; 
  //or some other code to get your value
}

使用服务器端的输入框访问该值

protected void btnSubmit_Click(object sender, EventArgs e) {
   var hiddenValue = hiddenControl.Value;
}

答案 1 :(得分:2)

您可以使用服务器端div,例如ie;

<asp:Panel ID="blah" runat="server">500</asp:Panel>

然后您可以在服务器端访问它及其内容。

可替换地;

<div id="blah"><asp:Literal ID="blahContent" runat="server" Text="500" /></div>

更新:问题澄清后,显然这不起作用。然后唯一的解决方案是使用javascript获取值,然后使用AJAX将其发送到服务器。

答案 2 :(得分:1)

生成HTML时,<% .. %>内的C#代码在服务器上运行。当值通过AJAX更新时,这一切都发生在客户端上 - 很久就在C#运行完毕之后。

答案 3 :(得分:0)

Ajax,搜索它,阅读它,找到一个好的库并开始实现

答案 4 :(得分:0)

服务器端永远不会直接访问客户端的变量(javascript)。你必须以某种方式将它们发送到服务器,通过查询或发布,或通过AJAX。