我正在开发一个在IE8上运行的应用程序,其中一个是在页面使用@Html.raw时,在模型出现错误时进行渲染和异常。
以下是代码片段:
@Html.LabelFor(model => model.Fonds)
@Html.EditorOrDisplayFor(model => model.Fonds)
@Html.Raw(!Model.IsFondsValid ? "<span class=\"field-validation-error\"> </span>" : "")
和Css:
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;
vertical-align: middle;
}
如果Fonds属性出现问题,跨度将显示其icone,并且我想尽快进行任何修改以纠正此错误,IE8会显示一个消息框,要求我以兼容模式重新加载页面
你对这种行为有什么想法吗?
谢谢。
注意:如果我更改CSS文件并将显示样式设置为“display:block”,则IE不会再向我询问是否在兼容模式下重新加载了我的页面。奇怪的行为,我不明白。
答案 0 :(得分:1)
感谢您的回答。 Apparentli IE8不喜欢内联块,这是我的问题的原因。 @John Anastasio的提示来自@John H的链接IE8 display inline-block not working分享解决了我对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;
}
再次感谢。
答案 1 :(得分:0)
您的CSS可能与问题无关。
尝试将代码更改为:
@Html.LabelFor(model => model.Fonds)
@Html.EditorOrDisplayFor(model => model.Fonds)
@(!Model.IsFondsValid
? Html.Raw("<span class=\"field-validation-error\"> </span>")
: Html.Raw(""))