JSON物件傳遞
在showModalDialog中,我們可以在子視窗內選取想要的資料回傳給母視窗,但是,卻沒辦法回
傳物件。在ASP.NET Ajax中,有提供了好用的方法可以讓我們處理這種問題。
(必需使用ScriptManager)
Client:
Sys.Serialization.JavaScriptSerializer.serialize 把資料序列化
Sys.Serialization.JavaScriptSerializer.deserialize 反序列化
範例:
(母視窗)
function addPerson()
{
var dialogArguments = { Person:{}};
var sFeatures = "resizable:no;dialogWidth:200px;dialogHeight:200px;unadorned=1";
var returnVal = window.showModalDialog("JSON.aspx", dialogArguments, sFeatures);
if (returnVal)
{
var person = Sys.Serialization.JavaScriptSerializer.deserialize(returnVal.Person);
document.getElementById("NameTextBox").value = person.Name;
document.getElementById("AgeTextBox").value = person.Age;
}
}
</script>
(子視窗)
var Person =
{
Name:"",
Age:0
};
function returnJosn()
{
var args = window.dialogArguments;
Person.Name= document.getElementById("name").value;
Person.Age = document.getElementById("age").value;
args.Person = Sys.Serialization.JavaScriptSerializer.serialize(Person);
window.returnValue = args;
window.close();
}
</script>
Server端則可以利用System.Web.Script.Serialization中提供的方法進行反序列化:
Dictionary<string, object> o = j.DeserializeObject(item) as Dictionary<string, object>;
DotBlog 的標籤:ASP.NET,JavaScript