使用IE8在MVC4中使用@ Html.Raw

时间:2013-11-25 21:11:35

标签: html css asp.net-mvc razor

我正在开发一个在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不会再向我询问是否在兼容模式下重新加载了我的页面。奇怪的行为,我不明白。

2 个答案:

答案 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(""))