在MVC中,如何在现有DLL类中的属性上[AllowHtml]?

时间:2016-02-26 14:21:05

标签: c# html .net asp.net-mvc asp.net-mvc-4

我在我的MVC项目中使用DataTables.NET。它有一个IDataTablesRequest接口,通常在动作中使用如下:

public async Task<ActionResult> GetTableData(IDataTablesRequest request) {
   ...
}

IDataTablesRequest接口的一部分包含AditionalParameters属性:

public IDictionary<string, object> AditionalParameters { get; set; }

我试图仅在AditionalParameters内传递HTML属性,但MVC不会让我。

我尝试过的是实现我自己的IDataTablesRequest课程,这样我可以在AditionalParameters前加[AllowHtml],但是没有取得任何成功,因为它包含{ {1}}如果在该类中实现,则无法在MVC层上序列化的属性:

Columns

因为愚蠢的public IEnumerable<IColumn> Columns { get; set; } 接口包含子接口,所以我无法重新实现IDataTablesRequest。有什么建议?从JavaScript的角度来看,数据在传入时已经被编码,因为它最初已经通过IColumn进行了HTML编码,但即使在编码之后它也包含像HttpUtility.HtmlEncode(value)这样的MVC不喜欢的元素。将其传递回&操作时,我不想在此处进行双重编码,因为这会导致其他问题。

2 个答案:

答案 0 :(得分:0)

你能否详细介绍哪些部分与html相关?即[AllowHtml]

的正常用法

AllowHtmlAttribute类

来自mircosoft

  

允许请求在模型绑定期间包含HTML标记   跳过属性的请求验证。 (这是强烈的   建议您的应用程序明确检查所有模型在哪里   您禁用请求验证以防止脚本漏洞利用。)

我无法看到哪些数据表与[AllowHtml]

有关

答案 1 :(得分:0)

我通过使用AditionalParametersJson.Encode which are a part of System.Web.Helpers序列化和反序列化我需要在服务器端使用的Json.Decode数据找到了解决方法。