2016-02-26 50 views
0

我在我的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不喜欢这样的元素行动,我不想在这里进行双重编码,因为这可能会导致其他问题。

回答

0

你能详细说明哪些部分是html相关的。即的[AllowHtml]

AllowHtmlAttribute类

通常使用来自的Mircosoft

允许请求以包括模型由 跳过请求验证的属性绑定期间HTML标记。 (强烈 建议应用程序显式检查,其中 你为了防止脚本漏洞禁用请求验证的所有型号。)

我什么也看不见数据表有[AllowHtml]

+0

关于DataTables,他们不允许重新实现'IDataTablesRequest',这样当你实际发送一个AJAX请求时它就会工作,因此,你不能在AditionalParameters对象中有HTML,因为MVC会阻止请求因为它认为它是网络攻击。 – Alexandru

+0

和请求的哪一部分是html – Seabizkit

+0

'AditionalParameters',就像这个名字暗示的那样是一个你可以自由使用的字典来设置键值对。在附加参数中,我需要传递一个包含HTML的字符串,因为它是在这个愚蠢的'IDataTablesRequest'对象中唯一的位置。 – Alexandru

相关问题