IE9与Html.DropDownListFor的错误

时间:2012-01-26 10:43:29

标签: asp.net-mvc-3 internet-explorer-9 html.dropdownlistfor

您好我需要一些关于Internet Explorer 9中的错误的帮助。我目前正在开发ASP.NET 4 MVC 3 Razor中的一些CRUD屏幕。在多屏幕中,我使用@ Html.DropDowListFor为外键创建简单的链接。

但是当我在IE9(并且只有IE9)中使用它们时,DropDownList将被渲染为小于其通常的大小,文本将显示比正常低几个像素,并且如果显示的单词大于a少量的字符(不确定是什么数字,我认为它大约是10)它将无法完全呈现。奇怪的是,当我点击DropDownList时,它将自行修复。

查看代码:

@Html.DropDownListFor(model => model.Asset.FkAssetTypeId, new SelectList(Model.AssetTypes, "AssetTypeId", "Name"))
@Html.ValidationMessageFor(model => model.Asset.FkAssetTypeId)

型号代码:

[Display(ResourceType = typeof(I18N_Asset), Name = "Label_Asset_FkAssetTypeId")]
public int FkAssetTypeId { get; set; }

任何人都有这个问题的经验,并知道解决这个问题的方法吗?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我发现了问题所在,我在同一页面上使用了JQuery标签。这导致dropdownlistfor-s的前端不能扩展到为整个站点设置的css。而是使用JQuery选项卡的前端渲染dropdownboxfor,然后将前端设置为css。

我通过使用Javascript在Document.ready函数中设置font-size解决了这个问题:

// IE9 causes a bug where the dropdownlists will not be displayed correctly because they won't adapt to their current font-size
// this javascript fixes that by resetting the font-size
if (window.navigator.systemLanguage && (!document.documentMode || document.documentMode === 9)) { //check if IE9 is being used
    var list = document.getElementsByTagName('Select'); // get all dropdownlists
    for (i = 0; i < list.length; i++) {
        list[i].style.fontSize = list[i].style.fontSize; // reset the font-size
    }
}