在ASP.Net C#传递一个JavaScript变量在SQL数据源

问题描述:

我有一个Java脚本变量,我想用它为我的sqldatasourse我怎么能做到这一点。这里是我的Java脚本代码在ASP.Net C#传递一个JavaScript变量在SQL数据源

var div = document.getElementById('main_content').offsetHeight; 
      var length = Mah.round(div/400); 

而且我想在这里使用可变长度的选择命令

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:qbuyConnectionString1 %>" 
     SelectCommand="SELECT TOP variable * FROM [advertisement] WHERE ([enable] = @enable) ORDER BY NEWID()"> 
     <SelectParameters><asp:Parameter DefaultValue="1" Name="enable" Type="Int32" /></SelectParameters> 
</asp:SqlDataSource> 
+2

的Javascript的客户机上运行。服务器上的SQL。你的问题没有任何意义。 – 2012-02-13 16:36:20

+2

您希望某些客户端变量影响服务器中的某些内容,您需要将其发送到那里,Ajax请求是执行此操作的最佳方式。 – gdoron 2012-02-13 16:39:08

根据你如何试图做到这一点,最简单的解决方案是上述的一些建议组合。

  1. 在页面中创建一个服务器端ASP.NET隐藏字段控件。
  2. 设置服务器端隐藏字段控制到JavaScript变量值。
  3. 在现有的数据库被访问,其将触发_Selecting事件中,“参数”值设置为隐藏的服务器侧控制的。

步骤1:

<!--Create an ASP.NET hidden field server control--> 
<asp:HiddenField ID="HiddenField1" runat="server" /> 

步骤2:

//JavaScript you were using populating the 'length' variable: 
var div = document.getElementById('main_content').offsetHeight; 
var length = Mah.round(div/400); 
//Now set the hidden field's value to your JS variable value: 
document.getElementById('<%= HiddenField1.ClientId %>'); 

步骤3:

protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e) 
{ 
    //The 'Selecting' event fires *prior* to the wired up Select method being called. 
    //This is the spot to add in or modify any of the parameter values: 
    e.Command.Parameters["LengthParameter"].Value = this.HiddenField1.Value; 
} 

以及你可以创建一个隐藏的元素并插入从JS值到它,然后从阅读c#并将其插入数据库。

的HTML

<input type="hidden" id="dataForSQL"></input> 

的JS

$('#dataForSQL').html(length); 
+0

?! div而不是隐藏?如何将元素连接到服务器最重要的是缺少。 – gdoron 2012-02-13 16:41:05

+1

只有输入字段被发布到服务器。 – Magnus 2012-02-13 20:41:59

+0

隐藏的div不正确。我将它更新为“输入”。从那里他实际上将通过AJAX将其提交给控制器。 – 2012-02-13 20:42:31

你需要使用AJAX的JS变量发送到服务器。假设您的ASP页面被称为query.asp,您可以使用jQuery执行以下操作。现在

$.get('query.asp', {length: length}); 

你的ASP页面可以访问它像Request.QueryString('length')