[英]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.