我在我的MVC项目中使用DataTables.NET。它有一个IDataTablesRequest
接口通常被用作一个动作如下:在MVC中,你怎么能[AllowHtml]在一个现有的DLL类的属性?
public async Task<ActionResult> GetTableData(IDataTablesRequest request) {
...
}
的IDataTablesRequest
接口部分包含一个AditionalParameters
属性:
public IDictionary<string, object> AditionalParameters { get; set; }
我试图通过HTML仅在AditionalParameters
属性,但MVC不会让我。
我曾尝试是实现我自己IDataTablesRequest
类,这样我可以用[AllowHtml]
前缀AditionalParameters
,但都没有成功,因为它包含一个Columns
属性失败如果实现MVC层上连载在该类:
public IEnumerable<IColumn> Columns { get; set; }
因为愚蠢IDataTablesRequest
接口包含的子接口,它的一部分,我不能重新实现IColumn
。有什么建议么?从JavaScript的角度来看,数据在传递时就已经被编码了,因为它最初已经通过HttpUtility.HtmlEncode(value)
进行了HTML编码,但是即使在编码后,它也包含了像&
这样的元素,当将它传递回GetTableData
时,MVC不喜欢这样的元素行动,我不想在这里进行双重编码,因为这可能会导致其他问题。
关于DataTables,他们不允许重新实现'IDataTablesRequest',这样当你实际发送一个AJAX请求时它就会工作,因此,你不能在AditionalParameters对象中有HTML,因为MVC会阻止请求因为它认为它是网络攻击。 – Alexandru
和请求的哪一部分是html – Seabizkit
'AditionalParameters',就像这个名字暗示的那样是一个你可以自由使用的字典来设置键值对。在附加参数中,我需要传递一个包含HTML的字符串,因为它是在这个愚蠢的'IDataTablesRequest'对象中唯一的位置。 – Alexandru