2010-04-13 36 views
2

將模型對象序列化到查詢字符串中是否可能? 我不知道這是否可能,但如果不是這樣,最好的方法是什麼?將模型序列化到查詢字符串

<% Html.RenderAction("Grid", "Grid", new { gridModel= ViewData["model"]}); %> 

該模型包含CA 20點的特性,並分別與他們創造的查詢字符串將使它成爲一個痛苦與工作,它看起來真難看。所以我有什麼替代方案?

+1

你可以將它序列化爲json,然後在你的動作中反序列化它。但我會建議只發送一個標識符到動作中,以便您可以獲取動作中的所有數據。或者使用Html.RenderPartial()。這種做法違背了renderaction helper的目的,並以某種方式抵制mvc模式。 – 2010-04-13 11:34:42

回答

0

我結束了使用構成了本。雖然沒有我想要的那麼漂亮,但是據我瞭解,我可以做到這一點的唯一好方法。

0

要直接回答,您可以使用類似JSON.NET的東西將其序列化爲ASCII,然後使用base64對其進行編碼。

但是,您可以在查詢字符串中包含多少數據,這是非常實際的限制,我會毫不猶豫地這樣做。

我能想到的最接近的東西就是創建一個GUID,使用該GUID作爲存儲Session中對象的鍵,然後傳遞RenderAction的GUID。該操作會將對象從Session中取出,然後將其從Session中刪除。

快速僞代碼(不能保證,甚至編譯,更不用說工作)

var _requestKey = Guid.NewGuid(); 
Session[requestKey] = gridModel; 

然後在另一面:

var gridModel = Session[requestKey] as GridModelType; 
Session[requestKey] = null; 
+0

很酷。我明白你在說什麼。我最終解決了這個問題,不是序列化模型,而是手動輸入需要的參數。不漂亮,但它工作正常。謝謝你的回答。 – MrW 2010-05-04 15:10:32