@用IE8在MVC4中创建Html.Raw
我正在开发一个在IE8上运行的应用程序,其中一个是page use@Html.raw来呈现,当模型出现一些错误时会出现异常 下面是代码的片段:@用IE8在MVC4中创建Html.Raw,html,css,asp.net-mvc,razor,Html,Css,Asp.net Mvc,Razor,我正在开发一个在IE8上运行的应用程序,其中一个是page use@Html.raw来呈现,当模型出现一些错误时会出现异常 下面是代码的片段: @Html.LabelFor(model => model.Fonds) @Html.EditorOrDisplayFor(model => model.Fonds) @Html.Raw(!Model.IsFondsValid ? "<span class=\"field-validation-error\"> </span
@Html.LabelFor(model => model.Fonds)
@Html.EditorOrDisplayFor(model => model.Fonds)
@Html.Raw(!Model.IsFondsValid ? "<span class=\"field-validation-error\"> </span>" : "")
如果属性Fonds出现问题,span将显示其图标,并且只要我想进行任何修改以更正此错误,IE8就会显示一个消息框,要求我以兼容模式重新加载页面
你知道为什么会有这种行为吗
多谢各位
注意:如果我更改CSS文件并将显示样式设置为“display:block”,IE将不再要求我以兼容模式重新加载页面。奇怪的行为,我不明白。您的CSS可能与问题无关 尝试将代码更改为:
@Html.LabelFor(model => model.Fonds)
@Html.EditorOrDisplayFor(model => model.Fonds)
@(!Model.IsFondsValid
? Html.Raw("<span class=\"field-validation-error\"> </span>")
: Html.Raw(""))
@Html.LabelFor(model=>model.Fonds)
@Html.EditorOrDisplayFor(model=>model.Fonds)
@(!Model.IsFondsValid)
?Html.Raw(“”)
:Html.Raw(“”)
谢谢您的回答。显然,IE8不太喜欢内联块,这就是我的问题的原因。
来自@John H分享的链接的@John Anastasio的提示解决了我在IE8上的问题,现在它工作得很好。
在显示内联块之后,我在css中使用float
span.field-validation-error
{
background-image: url('Images/error.png');
background-repeat: no-repeat;
color: transparent;
background-size: 16px 16px;
height: 20px;
line-height: 20px;
font-size: 20px;
content: " ";
width:20px;
overflow:hidden;
display:inline-block;
float : right;
vertical-align: middle;
}
再次感谢。作为旁注:我只将代码放在单独的行中进行格式化。它不会影响您的输出。谢谢您的回答,但不幸的是,我仍然遇到了同样的问题。问题是,如果我删除span中的类,问题就会消失。您不能使用@Html.ValidationMessageFor(m=>m.Fonds)吗?我可以,但我正在尝试以实现它的方式工作。我已经alerady实现了一个变通方法。谢谢你的解决方案。我应该帮助你。首先尝试一下答案,但我认为第二个答案下面Boltclock的评论可能就是你想要的。很高兴它起到了作用。如果可以,您应该将此标记为正确答案。您可以通过单击投票计数器下方答案左侧的复选标记来完成此操作。
span.field-validation-error
{
background-image: url('Images/error.png');
background-repeat: no-repeat;
color: transparent;
background-size: 16px 16px;
height: 20px;
line-height: 20px;
font-size: 20px;
content: " ";
width:20px;
overflow:hidden;
display:inline-block;
float : right;
vertical-align: middle;
}