簡體   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