|
1. 本论坛禁止小广告和一帖多发
希望注册个用户来发小广告的用户请绕行,一经发现绝不留情。
FineUI 的第一个论坛就是被小广告淹没的,这次论坛重开,只允许通过QQ账号登陆也是这个目的。
不要一贴多发,否则会严肃处理。
2. 选择适合自己的开发框架
我不止一次的对 FineUI 和 Ext.Net这两个框架做过说明,FineUI 是由三生石上独立开发完成的基于 jQuery / ExtJS 的开发框架,Ext.Net是由国外公司开发的基于ExtJS的开发框架,各自都有自身的优缺点,请大家根据自己的实际情况选择适合自己的开发框架。
在 http://www.cnblogs.com/sanshi/archive/2012/02/11/2347235.html 这篇文章中,我曾对此进行过详细的说明:
FineUI 与ExtJS,ExtNet,ExtJsExtender的区别?
ExtJS是纯JavaScript的控件库,所以适用于后台为PHP,ASP.NET或者JSP的项目,并且是ExtAspNet和其他库的基础。
ExtNet是国外一家公司开发的基于ExtJS的ASP.NET控件库,从功能上讲比较完善,不过开发模型相对复杂,如果你喜欢ExtNet的开发风格或者需要使用ASP.NET MVC,可以尝试这个控件库。
ExtJsExtender是一个比较早的基于ExtJS的ASP.NET控件库,但是功能过于简陋,长期没有更新,并且对ASP.NET AJAX有依赖。
FineUI(开源版) 是一组基于ExtJS的ASP.NET控件库。最大的优点就是简单实用。基于ASP.NET2.0,项目中只需要引用 FineUI 的 DLL 和 JSON 的DLL即可。还要注意 FineUI 只适合WebForm的项目,不适合ASP.NET MVC的项目。
注:由于这里是 FineUI 的官方论坛,因此为了避免初学者对两者的混淆,禁止关于Ext.Net的技术讨论,有关Ext.Net的讨论请移步到Ext.Net官网论坛:http://forums.ext.net/
3. FineUI 不支持IE6,IE7
FineUI 不支持IE6, IE7,因为目前主流的操作系统已经是Windows7,Windows10(可以使用IE8+),并且国内有很多Webkit内核浏览器(比如360浏览器,搜狗浏览器,QQ浏览器等等)。
另:IE8 有限支持。由于 IE8 发布时间早,不支持很多现代HTML5、CSS3特性,因为 FineUI 对 IE8 仅提供有限支持,并且性能也是所有支持浏览器中最差的。
基于显示效果和性能考虑,推荐用户使用最新版的浏览器(比如Chrome、Firefox、Edge、IE11)。
4. FineUI(开源版)是完全免费的,但是extjs是收费的
FineUI(开源版)是完全免费的,基于Apache 2.0协议,因此你不需要向 FineUI 作者支付任何费用(如果你确实想的话,可以捐赠作者)。
但是 FineUI(开源版) 内置了extjs,如果应用于商业项目开发的话,需要获得 extjs 的授权。
企业客户可以考虑购买FineUI(专业版):http://fineui.com/pro/
5. FineUI 依赖于Newtonsoft.Json.dll
FineUI.dll只有一个版本,无论你的项目是2.0、3.5、4.0,都只需要引用同一个FineUI.dll即可。
而Newtonsoft.Json.dll在每个DotNet下都有自己的版本,比如你的项目是基于.Net 2.0的,就要引用json.net\Net20\Newtonsoft.Json.dll,如果你的项目是基于.Net 4.0的,就要引用json.net\Net40\Newtonsoft.Json.dl。
如果引用不正确,可能会出现各种问题!
6. 模板列显示undefined(基于DotNet4.0的项目,一定要注意!)
为Web.config中<system.web>的<page>标签添加 controlRenderingCompatibilityVersion 和 clientIDMode 两个属性。- <pages controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID">
- <controls>
- <add assembly="FineUI" namespace="FineUI" tagPrefix="f" />
- </controls>
- </pages>
复制代码 否则会出现表格中数据错位的情况!!
http://fineui.com/bbs/forum.php?mod=viewthread&tid=678
7. FineUI(开源版)的设计时支持需要购买商业授权
FineUI.Design是为FineUI(开源版)提供 VS 设计时支持的,需要购买商业授权,您可以通过购买此授权来支持FineUI的不断发展;如果不购买FineUI.Design授权,会在VS设计界面显示错误信息,但不会影响FineUI(开源版)的正常使用,请放心。
http://fineui.com/bbs/forum.php?mod=viewthread&tid=2169
8. IIS 5的经典错误 Method Not Allowed (405)
如果大家遇到如下类似的问题:
不允许用于访问路径“/”的 HTTP 谓词 POST。
本次页面请求失败!错误信息:Method Not Allowed (405)
请首先看这两个帖子来寻求解决办法:
http://fineui.com/bbs/forum.php?mod=viewthread&tid=111
http://fineui.com/bbs/forum.php?mod=viewthread&tid=1002
9. IIS7,AXD,404的经典错误
可能是IIS7 integrated mode 下导致的,参考这篇文章:
http://stackoverflow.com/questio ... integrated-pipeline
http://kenchell.blog.163.com/blo ... 092010101724918338/
如果是 IIS 是集成模式(Integrated Mode):
你需要在 system.webServer 节下面加上:- <add name="FineUIResAxd" verb="GET" path="res.axd" type="FineUI.ResourceHandler, FineUI"/>
复制代码 完整的 system.webServer 如下:- <system.webServer>
- <modules>
- <add name="FineUIScriptModule" type="FineUI.ScriptModule, FineUI"/>
- </modules>
- <handlers>
- <add name="FineUIResAxd" verb="GET" path="res.axd" type="FineUI.ResourceHandler, FineUI"/>
- </handlers>
- </system.webServer>
复制代码
如果 IIS 是经典模式:则需要把 httpModules 和 httpHandlers 添加到 system.web 节下面:- <system.web>
- <pages>
- <controls>
- <add assembly="FineUIPro" namespace="FineUIPro" tagPrefix="f"/>
- </controls>
- </pages>
-
- <httpModules>
- <add name="FineUIProScriptModule" type="FineUIPro.ScriptModule, FineUIPro"/>
- </httpModules>
- <httpHandlers>
- <add verb="GET" path="res.axd" type="FineUIPro.ResourceHandler, FineUIPro" validate="false"/>
- </httpHandlers>
- <system.web>
复制代码
在VS中开发时,默认使用内置的 IIS Express 服务器,你也可以方便的更改 IIS Express 的经典还是集成模式:
- VS中选中项目,点击 F4
- 显示属性窗口,方便的更改管道模式:
10. IE10 出现 __doPostBack 未定义的脚本错误
这是微软自己的BUG,需要在服务器上下载安装补丁:http://support.microsoft.com/kb/2600088
当客户使用 IE10,IE11访问运行 .Net Framework 4.0 的服务器页面时,可能会出现这个问题。.Net Framework 4.5 已经修复了这个BUG。
参考文章:
http://stackoverflow.com/questions/18244223/webform-dopostbackwithoptions-is-undefined-in-ie11-preview
http://stackoverflow.com/questions/18485339/dopostback-failing-in-ie-11-windows-8-1
11. 验证视图状态MAC失败
如果你在虚拟主机中部署ASP.NET应用,长时间放置页面后回发页面,可能会出现如下错误:
验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。
这是因为IIS默认使用自动生成的计算机密钥(MachineKey)来对ASP.NET的视图状态进行加密和验证,而虚拟主机的环境中这个MachineKey可能会被改变。因此我们需要在web.config中指定MachineKey,具体生成MachineKey的办法参考:
http://blogs.msdn.com/b/amb/archive/2012/07/31/easiest-way-to-generate-machinekey.aspx
一个典型的配置项如下所示:
- <machineKey decryptionKey="C955D0B041D3749FB4E150677F827DC1857B909399A5D152,IsolateApps" validationKey="891194EEC95A3895658E397FEA04F6187CFAF77151BE89F207D993BB4BA9DE4152BACB05BC4AEB8BBB5FDD950F77881204F59F3F5DBE39FC3EC49119EA7C106D,IsolateApps" />
复制代码
12. 检测到在集成的托管管道模式下不适用的ASP.NET设置
如果遇到这个错误,说明你的网站在IIS的集成模式下运行,你可以有两个选择:
【在IIS中设置网站在经典模式下运行】 或者 【简单修改 Web.config】
http://fineui.com/bbs/forum.php?mod=viewthread&tid=2136
这是一个常见问题,如果还是搞不定,请借助互联网搜索!
在VS中开发时,默认使用内置的 IIS Express 服务器,你也可以方便的更改 IIS Express 的经典还是集成模式:
- VS中选中项目,点击 F4
- 显示属性窗口,方便的更改管道模式:
13. Could not load file or assembly Newtonsoft.Json, Version=4.5.0
请使用VS自带的 Nuget 安装最新的 Newtonsoft.Json 库,或者手工为 Web.config 添加如下配置项:- <configuration>
- ......
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <dependentAssembly>
- <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
- <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
- </dependentAssembly>
- </assemblyBinding>
- </runtime>
- </configuration>
复制代码
特别注意,删除 Web.config 中 <configuration> 节的 xmlns 属性:- <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
复制代码 修改为:
特别注意,如果你在使用VS2012,请升级最新补丁 VS2012 SP4 离线升级包
14. 页面存在两个表格(Grid)时,出现的各种错位、不显示
在开源版中,确保页面中任意两个表格列的 ColumnID 不能重复! 专业版无此问题!
http://fineui.com/bbs/forum.php?mod=viewthread&tid=6236
15. VS2013打开项目,出现 F 未定义的错误
修改Web.config文件:
1. 删除 system.web 中的 httpModules 和 httpHandlers 两个配置项
2. 增加 system.webServer 配置项
下载适用于 VS2013 的 Web.config 文件(精简版):
16. IE8浏览器中出现JS错误:'Element' 未定义
1. 请正确设置 Web.config 或者 PageManager 中的属性 IEEdge (默认值就是true,无需设置)
2. 查看每个页面的 DOCTYPE 声明,如果类似如下形式:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
复制代码 请改为:
注意:第 2 条决定了浏览器所使用的文本模式,如果是 Transitional 设置,则浏览器可能会使用 Quirks文本模式,从而导致出现JS错误。
17. 【专业版】JS错误:'F' 未定义
这个错误一般是 JavaScript 未能正常加载导致的。如果你 F12 打开浏览器的调试工具,转到 网络(Network)选项卡,会发现 res.axd?js=f.js&t=22123 的链接的返回状态是 404!
解决办法:http://fineui.com/demo_pro/#/demo_pro/config/modify_webconfig.aspx
特别注意Web服务器是集成模式,还是经典模式,两者对应的 Web.config 配置不同!!
经典默认的典型配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
- <configSections>
- <section name="FineUIPro" type="FineUIPro.ConfigSection, FineUIPro" requirePermission="false" />
- </configSections>
-
- <FineUIPro Theme="Cupertino" />
-
- <system.web>
- <!-- Net4.0以上的项目,一定要为pages节点加上这两个属性:controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" -->
- <pages>
- <controls>
- <add assembly="FineUIPro" namespace="FineUIPro" tagPrefix="f" />
- </controls>
- </pages>
- <httpModules>
- <add name="FineUIProScriptModule" type="FineUIPro.ScriptModule, FineUIPro" />
- </httpModules>
-
- <httpHandlers>
- <add verb="GET" path="res.axd" type="FineUIPro.ResourceHandler, FineUIPro" validate="false" />
- </httpHandlers>
- </system.web>
-
- </configuration>
复制代码
集成模式的典型配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <configuration>
- <configSections>
- <section name="FineUIPro" type="FineUIPro.ConfigSection, FineUIPro" requirePermission="false" />
- </configSections>
-
- <FineUIPro Theme="Cupertino" />
-
- <system.web>
- <!-- Net4.0以上的项目,一定要为pages节点加上这两个属性:controlRenderingCompatibilityVersion="4.0" clientIDMode="AutoID" -->
- <pages>
- <controls>
- <add assembly="FineUIPro" namespace="FineUIPro" tagPrefix="f" />
- </controls>
- </pages>
- </system.web>
- <system.webServer>
- <modules>
- <add name="FineUIProScriptModule" type="FineUIPro.ScriptModule, FineUIPro"/>
- </modules>
- <handlers>
- <add name="FineUIProResourceHandler" verb="GET" path="res.axd" type="FineUIPro.ResourceHandler, FineUIPro"/>
- </handlers>
- </system.webServer>
- </configuration>
复制代码
如果使用 FormAuthentication,还要注意添加 res.axd 的例外,如下所示:- <authentication mode="Forms">
- <forms name=".ASPXFORMSAUTH" loginUrl="~/default.aspx" timeout="120" defaultUrl="~/main.aspx" protection="All" path="/"/>
- </authentication>
- <authorization>
- <deny users="?"/>
- </authorization>
- </system.web>
- <location path="res.axd">
- <system.web>
- <authorization>
- <allow users ="*" />
- </authorization>
- </system.web>
- </location>
复制代码
在VS中开发时,默认使用内置的 IIS Express 服务器,你也可以方便的更改 IIS Express 的经典还是集成模式:
- VS中选中项目,点击 F4
- 显示属性窗口,方便的更改管道模式:
18. 【专业版】无效授权
This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.
错误信息:
解决办法:运行里,输入组策略gpedit.msc,在安全选项里,禁用FIPS功能
19. 【专业版】GetRequestIPMAC出现异常(Provider failure, COMException)
错误信息:
尝试的解决办法:
1. 关闭服务器的 UAC
2. 首先执行命令行: iisreset,将网站所属的应用程序池(App Pool)的 加载用户配置文件(Load User Profile)设为 true
详情:http://fineui.com/bbs/forum.php?mod=viewthread&tid=6619
20. 【专业版】IE8下,IFrame 交互时可能会随机出现字体图标丢失的问题
这个是 IE8 的已知 BUG, FontAwesome 官网论坛已经确认这个问题,没有解决办法。
这个问题出现有两个条件:
1. Iframe 页面之间交互时(比如关闭启用Iframe的窗体控件)
2. 页面上使用了图标字体(比如FineUIPro中使用的FontAwesome字体)
在这两个条件同时满足时,会随机出现字体图标丢失的问题,经常发生在多次打开(关闭)启用Iframe的窗体控件的时候。
解决办法:
1. 避免使用IE8浏览- Windows7、8、10,请使用Chrome、Firefox、Edge或者IE11浏览器
- WindowsXP下,请使用Chrome、Firefox,或者带有极速模式的国内浏览器(比如搜狗浏览器、360浏览器等,本质都是Chrome内核)
2. 页面交互时避免使用启用IFrame的窗体控件
由于这个是IE8自身在处理 IFrame 和 图标字体时的BUG,所以没有更好的解决办法。
参考资料:
- https://github.com/FortAwesome/Font-Awesome/issues/5115
- https://github.com/FortAwesome/Font-Awesome/issues/2324
- https://github.com/FortAwesome/Font-Awesome/issues/954
- https://github.com/FortAwesome/Font-Awesome/issues/929
- http://www.samiam.org/blog/20110619.html
- http://kenneth.kufluk.com/blog/2010/02/losing-face-with-ie8/
21. 开源版安全漏洞(影响v3.3.0-v4.2.2之前的所有版本)
如果已发布的项目中使用了 FineUI(开源版)v3.3.0-v4.2.2之间的任一版本,请立即删除 Web.config 中的如下配置项:<httpHandlers>
<add verb="GET" path="res.axd" type="FineUI.ResourceHandler, FineUI" validate="false" />
</httpHandlers>
否则,恶意用户可以利用此漏洞下载项目中的任何文件(包括Web.config、DLL),从而导致密码泄露,服务器被攻击!
详情:http://fineui.com/bbs/forum.php?mod=viewthread&tid=7863
22. CS0234: 命名空间“System”中不存在类型或命名空间名称“DirectoryServices”
当然,这个错误和 FineUI 无关!
如果是 .Net4.0 项目,请在 Web.config 中添加如下配置项:
- <compilation debug="true" targetFramework="4.0" >
- <assemblies>
- <add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
- </assemblies>
- </compilation>
复制代码
详情:http://stackoverflow.com/questions/10691001/the-type-or-namespace-name-directoryservices-does-not-exist-in-the-namespace
23. 禁用 VS 的 Browser Link 功能
如果你发现自己的网页源代码中有类似如下的代码:
- <!-- Visual Studio Browser Link -->
- <script type="application/json" id="__browserLink_initializationData">
- {"appName":"Firefox","requestId":"861592d477c64fd590b602a9f006c074"}
- </script>
- <script type="text/javascript" src="http://localhost:2968/f26bea4f8e6a45868431324e7994cd75/browserLink" async="async"></script>
- <!-- End Browser Link -->
复制代码
请关闭 VS 的 Browser Link 功能:
详情:http://q.cnblogs.com/q/56059/
24. 请求筛选模块被配置为拒绝超过请求内容长度的请求(超过30M的文件上传出错)
这是因为 IIS7 默认的上传文件大小限制为 30M,除了设置:
- <system.web>
- <!-- 请求正文的最大值: 100 * 1024 = 102400KB = 100M -->
- <httpRuntime maxRequestLength="102400" executionTimeout="120" />
- ...........
- </system.web>
复制代码
之外,还需要设置:
- <system.webServer>
- <security>
- <requestFiltering>
- <!-- 请求正文的最大值: 100 * 1024 * 1024 = 104857600 bytes = 100M (IIS 7 默认文件上传大小时30M) -->
- <requestLimits maxAllowedContentLength="104857600" />
- </requestFiltering>
- </security>
- </system.webServer>
复制代码
参考文档:
http://www.cnblogs.com/JKqingxin ... /10/29/2744663.html
https://msdn.microsoft.com/en-us/library/ms689462(v=vs.90).aspx
http://fineui.com/bbs/forum.php?mod=viewthread&tid=947
25. 表格 DataBind() 函数执行慢
有两点需要注意:
1. 如果用到 EntityFramework,请确保所有查询数据都已加载,而不是延迟加载。
2. 确保 DataField、DataToolTipField 等属性对应的名称和数据源中的名称一致!!!
不正确的指定 DataField 会导致 try-catch 的执行,会严重影响性能。有测试表明,本来 0.0001s 执行完成的绑定操作,可能会被推迟到 1.0s 以上。
26. 表格中字体异常(关闭弹出窗体后,原来页面字体变大)
如果出现如下图所示的表格中字体异常的现象:
请页面设置正确的文档类型:- <!DOCTYPE html>
- <html>
- <head>
复制代码
详情:http://fineui.com/pro/upgrade.html
有网友遇到在弹出窗体关闭后,原来页面上的字体变大了:
原来的页面:
点击打印后,原来页面上字体变大:
原因是,点击打印时网友改变了HTML结构,在<html>标签外边输出了<script>标签,如下所示:
27. 检测到有潜在危险的Request.Form值
页面回发时出现类似如下错误框:
请注意设置页面声明:<%@ Page validateRequest="false" ...>
帖子:
http://fineui.com/bbs/forum.php?mod=viewthread&tid=4456
http://fineui.com/bbs/forum.php?mod=viewthread&tid=3962
http://fineui.com/bbs/forum.php?mod=viewthread&tid=6529
28. Failed to read the frame property from Window
当一个网站A内嵌在另一个网站B的IFrame里面,并且A试图在B页面弹出窗体(FineUI的Window控件),会出现如下错误:
这个是浏览器的安全策略限制,请绕行!!
相关帖子:http://fineui.com/bbs/forum.php?mod=viewthread&tid=4336
29. woff2 + 404.3 Not Found --> 请添加 MIME 映射
虽然字体所在的路径的确存在,但是却报 404.3 错误,原因是 IIS 不能识别文件类型,需要我们手工添加 MIME 映射:
1. IIS服务器
打开IIS管理器 >> MIME >> 添加下面对应的扩展名和MIME类型
文件扩展名 | | .svg | image/svg+xml | .woff | application/x-font-woff | .woff2 | |
2. VS开发时用的 IIS Express服务器
点击网站名称,找到IIS Express配置文件路径,然后找到这个文件,用记事本打开,查找mimeMap节点,添加需要的扩展名和MIME类型并保存,完成!
- <mimeMap fileExtension=".woff" mimeType="application/x-font-woff" />
- <mimeMap fileExtension=".woff2" mimeType="application/x-font-woff" />
复制代码
参考文章:
1. http://www.cnblogs.com/hanwen/p/4212622.html
2. http://www.tuicool.com/articles/v6vauuM
30. 无法添加类型为“add”的重复集合项
详细的错误信息:在唯一密匙属性“name”设置为“fineuiproproscriptmodule”时,无法添加类型为“add”的重复集合项
原来是当前网站部署为虚拟目录,上层网站也有Web.config,导致重复添加项。
解决办法:当网站部署为单独的网站,可以通过不同的端口号区分(不要部署为虚拟目录)。
帖子:http://fineui.com/bbs/forum.php?mod=viewthread&tid=8600
31. 不支持HTML的autocomplete属性
HTML的autocomplete属性的详细描述:http://www.w3school.com.cn/html5/att_form_autocomplete.asp
但是这个所谓的表单自动完成功能仅在正常提交表单时有效,在AJAX提交时浏览器并不会记忆表单的值,所以在FineUI中用不到。
我们会默认在表单的 form 标签上添加 autocomplete=off 属性,这一点开源版和专业版保持一致。
32. SCRIPT7002: XMLHttpRequest: Network Error 0x2ef3, Could not complete the operation due to error 00002ef3
如果在 IE 中遇到这个问题(Chrome、Firefox应该不会出现这个问题),请先尝试关闭IIS的Keep-Alive机制:
进入站点设置,然后选择HTTP Response Headers设置,点击Set Common Headers,将Enable HTTP keep-alive复选框取消选中即可。
参考:
1. http://www.cnblogs.com/OpenCoder/p/5089258.html
2. http://stackoverflow.com/questio ... etwork-error-0x2ef3
32. 数字位数不要超过 16 位!(JavaScript能精准表达的最大整数:9007199254740992)
如果遇到如下的诡异问题:
请检查你是否遇到了精度大于 16 位的整数,JavaScript 中能精准表示的最大整数是 Math.pow(2, 53),也即是:9007199254740992
- 9007199254740992 + 1 // 丢失
- 9007199254740992 + 2 // 未丢失
- 9007199254740992 + 3 // 丢失
- 9007199254740992 + 4 // 未丢失
复制代码
另一个例子:
- var a = 12094719425249281; a
复制代码
解决办法:
方法一:避免使用超过 16 的整数数字(如果这个不可避免,请使用方法二)
方法二:使用字符串类型(string),而不是长整形(long)
参考资料:http://www.cnblogs.com/snandy/p/4943138.html
33. 导出excel时长数字变成了科学计数法(2.63562E+15)
实际身份号:2635621982021530
导出后的身份证号的格式是:2.63562E+15
可以在导出时指定 Excel 解析方式:
- sb.AppendFormat("<td style='vnd.ms-excel.numberformat:@;width:140px;'>{0}</td>", html);
复制代码
参考:http://fineui.com/bbs/forum.php?mod=viewthread&tid=6592
34. 行绑定时列属性改变对第一行无效(RowDataBound和PreRowDataBound)
如果要实现表格每一行渲染的内容不同,则需要改变列属性。很多网友发现在行绑定事件中改变列属性时,对第一列无效!!
其实这个并不是BUG,道理也很简单:行绑定时,行内的数据已经绑定结束,此时改变列属性已经不能再应用到本行数据了。
解决办法:
将 RowDataBound 事件改为 PreRowDataBound 事件!!
参考:
- http://www.cnblogs.com/sanshi/archive/2012/10/19/2730381.html
- http://fineui.com/bbs/forum.php?mod=viewthread&tid=1711
- http://fineui.com/bbs/forum.php?mod=viewthread&tid=3408
- http://fineui.com/bbs/forum.php?mod=viewthread&tid=3705
35. [开源版]如何从FineUI v3.x 升级到 v4.x 版本(老版本升级)?
FineUI v3.x 与 FineUI v4.x 的差异比较大(根本原因是内部使用的extjs版本的变化比较大),所以升级过程会比较麻烦。
一般推荐的升级步骤是:
1. 先下载 《FineUI3to4一键升级工具》,并严格按照使用方法操作!!
2. 更新项目使用的 FineUI.dll 和 extjs 目录(extjs目录版本要和DLL版本一致!!)
3. 使用VS自带的NUGET升级JSON库:Newtonsoft.Json.dll
4. 编译项目,全面测试(肯定会遇到问题,请参考版本升级记录,耐心调试)
版本升级记录:
http://fineui.com/version
参考帖子:
《FineUI3to4一键升级工具》: http://fineui.com/bbs/forum.php?mod=viewthread&tid=5018
http://fineui.com/bbs/forum.php?mod=viewthread&tid=6003
http://fineui.com/bbs/forum.php?mod=viewthread&tid=6370
http://fineui.com/bbs/forum.php?mod=viewthread&tid=4889
36. 同源策略,Same Origin Policy,Domain,跨域
如果遇到类似的错误:
表明,你再进行跨域的JavaScript操作,这个是被浏览器明令禁止的行为!!没有变通的余地(否则就是浏览器的安全BUG了)
如果想在IFrame内访问外部页面,或者在外部页面访问IFrame内,则必须保证两个页面的URL前缀一样。
下面举例说明:
参考:
【同源策略】:http://en.wikipedia.org/wiki/Same-origin_policy
http://fineui.com/bbs/forum.php?mod=viewthread&tid=4336
如果你使用FineUI开发的页面,嵌入到其他不同域的页面中,需要确保所有弹出窗体和对话框都在本页面中显示,对于Window控件必须设置Target=Self。
37. 登录超时如何跳出框架页(顶层窗口)
这个问题说白了也很简单,和 FineUI 没有关系,几行JS代码搞定。
在你的登录页面加入如下几行JS代码,确保登录页面不能嵌入IFrame,比如在顶层打开:
- <script type="text/javascript">
- // 本页面一定是顶层窗口,不会嵌在IFrame中
- if (top.window != window) {
- top.window.location.href = "./default.aspx";
- }
- </script>
复制代码
其实这个问题最早是在 AppBox 中遇到的,后来我给 AppBox 的 default.aspx 加了这段JS脚本解决了。
38. VS2017打开AppBoxPro/Mvc后连不上数据库
VS2017打开AppBoxPro项目后,Ctrl+F5直接运行,报错如下所示:
这是因为AppBoxPro默认使用VS自带的LocalDb数据库,而在VS2013下此数据库实例在Web.config中配置的:
- <entityFramework>
- <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
- <parameters>
- <parameter value="v11.0" />
- </parameters>
- </defaultConnectionFactory>
- <providers>
- <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
- </providers>
- </entityFramework>
复制代码 而在VS2017中,配置节为:
- <entityFramework>
- <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
- <parameters>
- <parameter value="<span style="color: rgb(51, 51, 51); font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", "Microsoft YaHei", 微软雅黑, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(250, 251, 252);">mssqllocaldb</span>" />
- </parameters>
- </defaultConnectionFactory>
- <providers>
- <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
- </providers>
- </entityFramework>
复制代码
因此,如果你使用VS2017打开AppBoxPro/Mvc,则需要将Web.config中的 v11.0 改为 mssqllocaldb。
39. ASP.NET项目第一次页面加载很慢,第二次就快了(预编译)
这是因为第一次运行时,ASP.NET会对项目中的.aspx, .ascx及App_Code中的.cs文件进行动态编译,而这一过程随着项目的规模增大变得越来越慢。
遇到这种情况,就要用预编译:用aspnet_compiler命令,命令示例:
aspnet_compiler -v \ -p G:\SourceWebSite G:\TargetWebsite -fixednames
参数说明:
-v \ 要编译的虚拟路径,这里表示根路径。
-p G:\SourceWebSite 要编译的源Web项目所在文件夹。
G:\TargetWebsite 编译目标文件夹。
-fixednames 每个.aspx与.ascx文件都编译生成单独的dll文件,并使用固定文件名。
参考:
http://www.cnblogs.com/dudu/archive/2011/02/07/aspnet_compiler_precompilation.html
https://blog.csdn.net/qq285679784/article/details/78361695
http://www.cnblogs.com/artech/archive/2007/05/26/760292.html
http://fineui.com/bbs/forum.php?mod=viewthread&tid=21520
40. 如何获取子表格(设置行过滤条件)
表格后台数据绑定时,代码一般如下所示:
- DataTable table = DataSourceUtil.GetDataTable();
-
- Grid1.DataSource = table;
- Grid1.DataBind();
复制代码
有时,我们需要对表格在内存中进行过滤,可以参考如下两个代码:
- DataTable table = DataSourceUtil.GetDataTable();
- DataTable newTable = table.Clone();
- foreach (var item in table.Select("Gender=1"))
- {
- newTable.ImportRow(item);
- }
-
- Grid1.DataSource = newTable;
- Grid1.DataBind();
复制代码
或者更简单:
- DataTable table = DataSourceUtil.GetDataTable();
-
- DataView newView = table.DefaultView;
- newView.RowFilter = "Gender=1";
- Grid1.DataSource = newView.ToTable();
- Grid1.DataBind();
复制代码
41. Grid删除行时,发现Grid1.SelectedRowIndexArray.Length 一直等于0
检查下 Page_Load 中是否少了 IsPostBack 的判断!
详情:http://fineui.com/bbs/forum.php?mod=viewthread&tid=21856
42. 升级基础版后,提示不支持EnableAnimation
这是因为FineUIPro(基础版)不支持CSS3动画效果,可以查看官网首页的基础版与企业版功能对比。
解决办法很简单,在 Web.config 中去掉 EnableAnimation 配置项或者设为false即可:
- <FineUIPro DebugMode="false" EnableAnimation="false" />
复制代码
43. 企业版如何进行版本升级?
企业版版本升级很简单,只需要如下步骤:
1. 替换 DLL。
2. 从相应版本的在线示例源代码中,拷贝如下目录到你的项目中:FineUIPro.Examples\res\themes。3. 重新编译项目,认真测试。
其实第 2 步也很容易理解,FineUIPro.Examples\res\themes 里面存放的都是自定义主题,而自定义主题可能会随着版本更新有所变化。
版本升级之后一定要重新编译,并对照更新记录认真测试,请预留足够的测试时间!!!
44. 在 afteredit 中调用 updateCellValue 更新单元格时错位
如下图所示:
在表格的 afteredit 事件中,我们希望根据 金额 和 外币汇率 算出折合人民币并更新此列的值。
但是有点意外的是:在单元格处于编辑状态时,点击下一行,当前点击行的 [折合人民币] 列得到了更新,而不是失去焦点的那一行!
为什么会这样呢?看下代码就知道了:
原来,更新单元格时用的行ID是这么来的:
- var grid8RowId = grid8.getSelectedCell()[0];
复制代码 这就不对了,getSelectedCell返回的是当前选中的单元格,而不是失去焦点的单元格多对应的行。
正确的写法应该是从事件参数中获取:
- var grid8RowId = p.rowId;
复制代码
参考示例:http://pro.fineui.com/#/gridedit ... ecellvalue_tax.aspx
45. 菜单显示错位
如下图所示:
出现这个问题,应该是你把 Menu 控件放到其他控件里面了,类似如下代码:
、
这是错误的,在FineUI中有一个规则必须遵守:
Window、Menu、HiddenField 控件放到 </form> 标签的前面,不要放到任何控件中!
在开源版的升级指南中有说明:http://fineui.com/pro/upgrade.html
46. FineUIMvc视图中ViewBag错误提示?
使用 FineUIMvc 项目的视图中,ViewBag下面可能会有错误提示:One or more types required to compile a dynamic expression cannot be found.
如果遇到类似提示,可以通过在 Web.config 中添加配置项属性来解决:
<system.web>
<compilation debug="true" targetFramework="4.5"/>
</system.web>
注:targetFramework要和你的项目保持一致,不一定就是4.5,如果你的项目使用的.Net Framework 4.6.1,那么这里就应该是:<compilation debug="true" targetFramework="4.6.1"/>
47. FineUIMvc中表格数据为空,日期选择器时间为00:00:00?
出现这个问题,可能是设置控件数据的属性位置不对,一般来说FineUIMvc中设置控件数据的属性要放到最后面,比如:
1. 表格的 DataSource 属性
2. 日期选择器的 SelectedDate 属性
.....
其中的道理也很简单:设置控件属性时可能会用到其他属性,比如设置表格 DataSource 时会用到前面的 Columns 属性定义,而设置日期选择器的 SelectedDate 属性时会用到 DateFormatString 属性。
如果不遵守这个规则,就会遇到奇怪的问题,下面举例说明:
错误用法一:
错误用法二:
48. FineUIPro升级后排版错乱(字体变大了)?
这是因为我们在 FineUIPro v5.0 时将默认字体从 13px 改为 14px 了,这也是紧跟Web前端UI潮流趋势。
但是,如果你已经有项目在运行中,希望能保持之前的字体大小,怎么办呢?
在企业版中,只需要在 Web.config 中增加配置项即可(如果你PageBase中设置了DisplayMode属性,确保修改到位):- <FineUIPro DebugMode="true" CustomTheme="pure_green" EnableAnimation="true" DisplayMode="Small" />
复制代码
注:DisplayMode配置项基础版不可用,在基础版中,推荐使用默认的字体大小,如果确实需要更改,可以自行为每个页面引入css文件,在其中定义字体大小。
49. 官网示例部署到图标字体显示错误(问号)?
本机运行正常,一旦部署到服务器,大部分图标字体显示为问号,如图所示。
本机运行正常,一旦部署到服务器,大部分图标字体显示为问号,如图一所示。
这是由于编码问题,默认FineUIPro项目和文件都是utf-8编码,如果部署到服务器后,父站点或者全部配置项采用的是gb2312编码,就会出现这个错误。
修正方法也很简单,强制请求响应都使用utf-8编码,修改Web.config文件,在<system.web>节内部添加配置项:
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
50. 表格中显示为&,但是文本输入框中显示为&
在这个官网示例中:https://pro.fineui.com/#/grid/grid_form.aspx
如果修改数据源,将【张萍萍】修改为【张萍&萍】时:
- DataRow row = table.NewRow();
- row[0] = 101;
- row[1] = "张萍&萍";
- row[2] = 2000;
- row[3] = true;
- row[4] = "材料科学与工程系";
- row[5] = 1;
复制代码 页面就会出现比较诡异的情况:
这是因为FineUIPro中表格列默认启用了服务端HTML编码(HtmlEncode),你也可以禁用此特性,如下所示:
- <f:RenderField Width="80px" ColumnID="Name" DataField="Name" HeaderText="姓名" HtmlEncode="false">
- </f:RenderField>
复制代码
当然,大部分情况下启用HTML编码是安全的,防止在页面渲染时执行了内嵌的JavaScript代码。
51. IFrame嵌套出错(Load denied by X-Frame-Options: ************* does not permit cross-origin framing )
错误截图如下:
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, <iframe> 或者 <object> 中展现的标记。
网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
他的值:
(1)DENY --- 表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
(2)SAMEORIGIN --- 表示该页面可以在相同域名页面的 frame 中展示。
(3)ALLOW-FROM https://example.com/ --- 表示该页面可以在指定来源的 frame 中展示。
如果是不限制 则配置 ALLOWALL ,但是就不安全了
来源:https://blog.csdn.net/lipei1220/article/details/78119584
52. 页面数据包含</script>标签
如果页面数据中包含 </script> 标签,会导致页面出现严重错误!
因为每当浏览器遇到</script>时,它都假定是脚本的结束标签(即使它出现在JavaScript字符串中),因此下载的脚本在浏览器中就会出错!
比如下面看似正常的脚本:
- <script type="text/javascript">
- alert("</script>");
- </script>
复制代码 其实是错误的! 浏览器会把这段脚本解析为 <script type="text/javascript">alert("</script>,从而出错,如下所示:
所以要避免向前台输出任何包含 </script> 的字符串。
参考:
1. https://stackoverflow.com/questions/236073/why-split-the-script-tag-when-writing-it-with-document-write
2. https://stackoverflow.com/questions/1659749/script-tag-in-javascript-string
53. 企业版部署后,每隔几次回发就出现JS错误!
这是一位 FineUIPro(企业版)客户发现的问题,错误截图类似:
经分析发现,每次出现这个错误之前都会弹出开发授权过期的提醒,类似如下所示:
这是因为每次授权提醒时,都会清空回发数据,导致页面状态不正确。
遇到这样的问题,解决方法很简单:企业版部署后,一定要生成服务器授权文件!
服务器授权文件的说明:https://fineui.com/pro/lic.html
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|