【发布时间】:2017-01-11 16:46:46
【问题描述】:
我有一个应用程序使用在开发环境中工作的数据列表,但在生产环境中返回没有查找的空白字段。我想广泛使用 datalist,因为它很容易提供自动完成功能,但直到它在生产环境中才能使用。
Dev 是 Win7 下 IE 11.0 上的 MVC VS 2010,在 HTML5Test 中得分 302。 生产环境为 Server 2012 R2 Standard 上的 IE 11.0,报告为 Win8.1,在 HTML5Test 中得分 312。
经过多次比较、检查、尝试、检查和审查,我找到了导致 datalist 停止工作的问题的根源。
Index.cshtml 中的 MVC 查看代码 这是试图隔离问题的最终实验代码:
@model IEnumerable<CRM_MVC.Models.BranchDiary>
@{
Layout = null;
}
<body>
<div>
<lable>Enter TV Series Name </label>
<input type="text" id="tv" name="series" list="tvseries" autofocus>
<datalist id="tvseries">
<option value="Heroes">
<option value="Lost">
<option value="Fringe">
<option value="CriminalMinds">
<option value="CSIMiami">
</datalist>
<p><strong>Note:</strong> The datalist tag is not supported in Internet Explorer 9 and earlier versions, or in Safari.</p>
</div>
</body>
显示 Index.cshtml 的 Internet Explorer 会话
该字段应提供自动完成下拉菜单,但不提供。
Inspect 屏幕显示 <datalist id=tv> 在同一行被 /datalist 错误地终止,并且在选项列表 /datalist 之后错误地出现了 //datalist。
当为 Div 选择右键单击编辑 HTML 时,原始 HTML 正确地具有第一个没有 /datalist 的 datalist 标记,并且选项列表在末尾被 /datalist 标记正确终止。
可以做些什么来阻止添加额外的东西,以便它在生产和开发中的工作方式相同?
【问题讨论】:
-
看起来浏览器,在这种情况下,IE5(从技术上讲,IE 以 IE5 模式运行)正在尝试“纠正”它在源代码中发现的“错误”。在同一个屏幕截图中,还有一个
<lable></lable>和下面几行</label><//label>,这是由实际错误引起的!所以,你需要做的是尝试在 IE10 或更高的模式下运行它。 -
并通过 W3C 验证器运行您的 HTML 以修复提到的
<lable>之类的问题。 -
感谢您深思熟虑的回复。我很感激您为此付出的时间和想法。我会尝试你的建议。在过去的 3 天里,我花了很多时间来解决这个问题,但没有成功。直到周六下午,我才发现它自己在“调整”html。使用 W3C 验证器是个好主意,我将通过它运行实际代码以及这个测试 sn-p。再次感谢您的评论。
-
也许就像在生产服务器上关闭兼容模式一样简单。
标签: asp.net-mvc html autocomplete html-datalist