我正在使用使用System.Windows.Controls.WebBrowser
控件的旧版.NET应用程序。我对通过此WebBrowser控件公开的.NET MVC Web应用程序具有完整的源代码访问权限。当然,MVC Web应用程序也可以通过普通的Web浏览器(在我的例子中,IE 11)获得。
MVC应用程序使用DevExpress 15.1.5来处理它的许多UI组件,而且我在WebBrowser控件呈现的渲染/行为差异方面存在一些问题"版本"和IE 11"版本"申请。我想要解决的主要问题是,开发表达验证消息没有出现在WebBrowser渲染中,但它们确实出现在IE 11渲染中。这是一个例子:
<td class="">
@Html.DevExpress().SpinEditFor(x => x.SomeRange,
settings => {
settings.Name = "SomeRange";
settings.Properties.MinValue = 0;
settings.Properties.MaxValue = 100;
settings.Properties.NullText = "Some Range";
settings.Properties.NumberType = SpinEditNumberType.Integer;
}).GetHtml()
</td>
当用户输入大于100的值时,在IE 11渲染中,会向他们显示一条验证消息:
该数字必须在0 ... 100
的范围内
但是,当用户在WebBrowser控件版本中执行此操作时,不会显示任何消息。
WebBrowser可以肯定地使用IE 11文档模式进行渲染。我通过registry settings mentioned here强制它来验证这一点,并检查WebBrowser和IE 11中的document.documentMode
以验证它们是否相同(它们都是,都返回{{1} })。
11
值得注意的是,两者之间存在一些其他轻微的渲染差异,例如我注意到默认的no-css Legacy App (WebBrowser Control)
appName: Netscape
appVersion: 5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko
documentMode: 11
IE 11
appName: Netscape
appVersion: 5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko
documentMode: 11
元素的样式略有不同(WebBrowser <button>
看起来它可能来自IE 7)。
我并不担心渲染差异(我只注意到默认的非样式控件的差异),但我确实需要显示验证消息。关于接下来要检查什么,或者如何解决这个问题的任何想法?