.net4xslt转换扩展函数坏了我正在升级asp.netv3.5web应用。直到v4,我在XmlDataSource对象上使用的XSLT转换遇到了一些问题。部分XSLT文件:问题好像出在这里删掉换成普通文本就可以了我设置XML数据源的方式:xmlDataSource.TransformArgumentList.AddExtensionObject("ds:HttpUtility",newSystem.Web.HttpUtility());xmlDataSource.Data=Cache.FetchPageMenu();我一直在Microsoft的页面上搜索任何v4更改,但找不到任何更改。所有这些在v3.5(和v2之前)中都运行良好。我没有收到任何错误,只是数据没有显示出来。问题似乎是.NET4.0为HttpUtility.HtmlEncode引入了额外的重载。在.NET3.5之前,存在以下重载:publicstaticstringHtmlEncode(strings);publicstaticvoidHtmlEncode(strings,TextWriteroutput);.NET4.0也有以下方法:publicstaticstringHtmlEncode(objectvalue);这将导致XslTransformException:(不明确的方法调用。扩展对象“ds:HttpUtility”包含多个“HtmlEncode”方法,这些方法采用1个参数。您可能看不到异常,因为它在某处被捕获并且没有立即报告。使用.NETFramework类因为扩展对象是一个脆弱的东西,因为新的Framework版本可能会破坏您的转换。解决方法是创建一个自定义包装器类并将其用作扩展对象。这个包装类可能没有参数个数相同的重载:以上是C#学习教程:.net4xslt转换扩展功能坏了。请注意—classExtensionObject{publicstringHtmlEncode(stringinput){returnSystem.Web.HttpUtility.HtmlEncode(input);}}//...XsltArgumentListarguments=newXsltArgumentList();arguments.AddExtensionObject("my:HttpUtility",newExtensionObject());本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
