2011-09-05 29 views
1

我正在使用MVC 3模型綁定與JQuery序列化程序()編輯窗體中的某些數據。除非在我的數據中有一些'url-encoded'(不知道更好的術語)文本,否則所有的工作都很好。這些數據就在那裏,因爲我使用了現在使用的富文本編輯器。模型綁定url編碼的字符串mvc 3

$.post("/controller/submit", $("form").serialize(), function (r) {....} 

我的控制器就像是

[HttpPost] 
public ActionResult Confirm(MyViewModel model) 
{ 
    return PartialView(model); 
} 

一些數據,這將導致問題看起來是這樣的

地點= DASD &起始日期= 5-SEP-2011 &開始時間= 0% 3A00 & endTime = 0%3A00 & EndDate = 6-sep-2011 & Title =你好& Description =%3Cstrong%3E大膽+母親%3C%2Fstrong%3E &定價= & BuyTicketsUrl = &類別ID = 1個& URL = &買入= 0 & MaximumExpense = 0

你可以看到,說明有這樣的東西%3Cstrong%3E因爲它是一個帶有一些html編碼文本的序列化文本框。我可以獲取默認模型綁定器來獲取html,還是可以更改JQuery序列化表單的方式?或者我應該使用JSON?

回答

2

.serialize()方法做它應該做的事情。在客戶端沒有其他需要做的事情。問題是會拒絕此輸入的服務器。你可以裝飾上與[AllowHtml]屬性視圖模型您Description屬性:

[AllowHtml] 
public string Description { get; set; } 

現在默認的模型綁定將竭誠爲分配該值。現在因爲有些惡意用戶可能會決定對您的網站做一些令人討厭的事情,如果您打算展示這個HTML解碼代碼,請確保您通過AntiXss。如果你總是要顯示這個HTML編碼值,那麼你很安全=>簡單地將它存儲在數據庫中並通過HTML編碼顯示。

+0

謝謝!奇蹟般有效 ;) – Gluip