在MVC中,如何在现有DLL类中的属性上[允许Html]

本文关键字:属性 允许 Html DLL MVC | 更新日期: 2023-09-27 18:36:17

我在我的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] ,但没有任何成功,因为它包含一个 Columns 属性,如果在该类中实现,则无法在 MVC 层上序列化:

public IEnumerable<IColumn> Columns { get; set; }

因为愚蠢的IDataTablesRequest接口包含子接口作为其中的一部分,所以我无法重新实现IColumn。有什么建议吗?从 JavaScript 方面来看,数据在传入时已经进行了编码,因为它最初已经通过 HttpUtility.HtmlEncode(value) 进行了 HTML 编码,但即使在编码后,它也包含像 MVC 不喜欢的元素&当将其传递回 GetTableData 操作时,我不想在这里进行双重编码,因为这可能会导致其他问题。

在MVC中,如何在现有DLL类中的属性上[允许Html]

您能否提供有关与html相关的部分的更多详细信息。 即 [AllowHtml] 的正常用法

AllowHtmlAttribute 类

来自 米尔科软件

允许请求在模型绑定期间包含 HTML 标记 跳过属性的请求验证。(强烈 建议应用程序显式检查所有模型,其中 禁用请求验证以防止脚本攻击。

我看不出数据表与 [AllowHtml] 有什么关系

我通过使用Json.EncodeJson.Decode来序列化和反序列化我需要在服务器端使用的AditionalParameters数据System.Web.Helpers找到了解决方法。