模型绑定url编码字符串MVC



我使用MVC 3模型绑定与JQuery serializer()相结合来编辑表单中的一些数据。一切都工作得很好,除了当我有一些"url编码"(不知道一个更好的术语)文本在我的数据。这些数据在那里是因为我使用了一个富文本编辑器,就像我现在使用的一样。

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

我的控制器是

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

一些会导致问题的数据如下所示

地点= dasd& StartDate可以= 5 - 9 - 2011,开始时间= 0% 3 a00& endTime = 0% 3 a00& EndDate = 6 - 9 - 2011,标题= Hello&描述= % 3 cstrong % 3 ebold +母亲% 3 c % 2 fstrong % 3 e&定价=,BuyTicketsUrl =, CategoryId = 1, Url =,报价= 0,MaximumExpense = 0

你可以看到描述有像%3Cstrong%3E这样的东西,因为它是一个带有一些html编码文本的序列化文本框。我能让默认的模型绑定器只获取html还是我能改变JQuery序列化表单的方式?还是应该使用JSON ?

.serialize()方法做它应该做的事情。在客户端不需要做任何其他事情。问题是服务器将拒绝此输入。您可以使用[AllowHtml]属性来修饰视图模型上的Description属性:

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

现在,默认的模型绑定器将乐意分配这个值。现在,如果您打算显示未编码的HTML,某些恶意用户可能会决定对您的站点做一些讨厌的事情,因此请确保通过AntiXss传递它。如果你总是要用HTML编码显示这个值,那么你是相当安全的=>只需将其存储在数据库中并以HTML编码显示

最新更新