JSON物件傳遞

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 的標籤:,