我試圖從我的ASP .NET C#MVC3項目中將對象發送到同一解決方案中的Silverlight項目。Silverlight的C#XML序列化
這是我用來序列化和反序列化的代碼,我從CodeProject(http://www.codeproject.com/Articles/233914/Passing-Objects-between-ASP-NET-and-Silverlight -Co)
public string getSerializedGameData()
{
Game g = Game.populateByID(this.gameID);
MemoryStream mem = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(Game));
mem.Seek(0, SeekOrigin.Begin);
xs.Serialize(mem, g);
byte[] data = mem.GetBuffer();
return Encoding.UTF8.GetString(data, 0, data.Length);
}
public static Game GetDeserializedGameObject(string xmlData)
{
StringReader sr = new StringReader(xmlData);
XmlSerializer xs = new XmlSerializer(typeof(Game));
return (Game)xs.Deserialize(sr);
}
這就是似乎工作的序列化和反序列化。
在我的ASPX頁面,我已經把:
<input type="hidden" id="game" value="<%=HttpUtility.HtmlEncode(Game.populateByID(Convert.ToInt32(Request["gameID"])).getSerializedGameData()) %>" />
哪些應該得到的對象,它建設成一個字符串,並對其進行編碼的HTML。然後嵌入爲隱藏字段。當我運行我的錯誤現在
string s = HttpUtility.HtmlDecode(HtmlPage.Document.GetElementById("game").GetProperty("value").ToString());
Game g = Game.GetDeserializedGameObject(s);
:
對其進行解碼,我使用
Data at the root level is invalid. Line 443, position 8
望着數據我看到有效的XML直到...
...
</gameEvents>
</Game>�����������
除了成千上萬的無效字符,我刪除它們以保持它的簡短。
查看源我看到:
...
</gameEvents>
</Game>" />
所以它不會出現是一個編碼問題。
最初我相信額外的字符超出了數據緩衝區的範圍,但我沒有看到它出現在源代碼中,並且如果XML序列化和Deseriailize已經過測試,則會留下HTMLDecode ..但我可以沒有發現任何問題。
我意識到我可以在去年之後剝離掉所有東西,但是我想知道是什麼原因造成的,因爲我不應該那樣做。
任何幫助將不勝感激,謝謝!
這看起來像是有承諾,今天早上我只有一分鐘時間讓它旋轉。我得到'名稱HTML在當前上下文中不存在'。試圖添加幾個不同的進口似乎沒有幫助。我會稍微考慮一下。 – pcaston2
'Html'是在每個ASP.NET MVC 3視圖中可訪問的HtmlHelper屬性。 –
我使用創建Silverlight時創建的DisplayTestPage。我嘗試添加另一個視圖並嵌入Silverlight。 HTML。隱藏的標籤正常工作,但實際的Silverlight插件由於某種原因不起作用。 – pcaston2