【问题标题】:model binding url encoded string mvc 3模型绑定 url 编码字符串 mvc 3
【发布时间】:2011-09-05 18:16:05
【问题描述】:

我将 MVC 3 模型绑定与 JQuery serializer() 结合使用来编辑表单中的一些数据。一切都运行良好,除非我的数据中有一些“url 编码”(不知道更好的术语)文本。之所以有这些数据,是因为我使用了一个富文本编辑器,就像我现在使用的一样。

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

而我的控制器就像

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

一些会引起问题的数据是这样的

地点=dasd&StartDate=5-sep-2011&startTime=0%3A00&endTime=0%3A00&EndDate=6-sep-2011&Title=Hello&Description=%3Cstrong%3Ebold+mother%3C%2Fstrong%3E&Pricing=&BuyTicketsUrl=&CategoryId=1&Url=&Bid= 0&MaximumExpense=0

您可以看到描述中有 %3Cstrong%3E 之类的内容,因为它是一个带有一些 html 编码文本的序列化文本框。我可以获取默认模型绑定器来获取 html,还是可以更改 JQuery 序列化表单的方式?还是应该改用 JSON?

【问题讨论】:

    标签: asp.net-mvc-3 jquery model-binding


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!像魅力一样工作;)
    猜你喜欢
    • 2014-05-25
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多