繁体   English   中英

动态将JS添加到ASP.NET页并从JS获取结果

[英]Dynamically Add JS to an ASP.NET page and get results from the JS

这是我的问题:

客户端为我提供了单独的JS文件,这些文件将在用户的系统上运行某种检查(浏览器类型,是否启用cookie?等),以及将从此检查返回的可接受值的列表。

我想在用户访问站点时浏览每个JS文件并将结果与​​可接受值列表进行比较,然后在用户通过或未通过这些要求时提醒用户。

我目前正在使用RegisterClientScriptBlock()将JS添加到客户端页面,因此正在运行它,但是在进行比较时,我遇到了将JS的结果值返回到ASP.NET的问题。

我尝试使用JS将值转储到的隐藏字段并读取ASP.NET,但是我很难按需生成隐藏字段(因为我不知道客户端可以拥有多少个Js文件)并让它们以ASP.NET代码运行。

任何帮助或朝着正确方向的建议都将非常有用,谢谢!

我要做的是使结果为KeyValuePair对象数组,然后将其序列化为JSON。 因此,您可以像这样创建javascript对象类型:

function KeyValuePair(key, value){
     this.Key = key;
     this.Value = value;
}

然后,您将像这样建立一个KeyValuePairs数组:

//This array is declared in the global scope 
var ValueArray = new Array();

function someFunction(){
   //this assumes that the key and value variables are created earlier in the function
   var valueToStore = new KeyValuePair(key, value);
   ValueArray[ValueArray.length] = valueToStore;
}

因此,在完成所有检查后,您将使用json2序列化程序将数组序列化为json,以存储在隐藏字段中。

var jsonToSaveToHiddenField = JSON.stringify(ValueArray);
//Logic to store resulting json and trigger the serverside evaluation here

在服务器端,您可以使用JavascriptSerializer将json反序列化为KeyValuePairs数组。 这是关于此的msdn文档: JavaScriptSerializer类参考

因此,使用这种方法,您只需要一个隐藏字段。 因此,您无需动态创建它就可以大大简化服务器端的检索。

上面的代码应该进行最小的更改,但是我还没有通过编译器运行它,因此可能会预置一些小的语法错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM