隐藏字段值在IE中无法呈现

4

我在一个数据绑定的GridView中有一个隐藏字段,在IE 11.0.9600中无法呈现其值。

.aspx

<Columns>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:HiddenField ID="hdnField" runat="server" Value='<%# ((MyObject)Container.DataItem).MyEnumValue.ToString() %>' />
      </ItemTemplate>
    </asp:TemplateField>

渲染输出

Chrome/Firefox

<input type="hidden" name="..." id="..." value="MyEnumStringValue">

IE

<input name="..." id="..." type="hidden"></input>

在IE中没有值,在Chrome/Firefox中没有闭合标签,名称相同、ID相同的情况下!

我需要做什么才能使值呈现?是否还有其他人遇到过这个问题?


你是否为 HiddenField 控件添加了 ControlAdapter 类? - angrymrt
@angrymrt 不,我从来没有需要使用它们。 - mizzle
1个回答

1
我尝试了以下内容并得到了预期的结果: aspx:
<asp:GridView ID="grid" runat="server" AutoGenerateColumns="false">
    <Columns>
        <asp:TemplateField>
            <ItemTemplate>
                <asp:HiddenField ID="hdnField" runat="server" Value='<%# ((MyObject)Container.DataItem).MyEnumValue.ToString() %>' />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

后台代码:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    grid.DataSource = new[] { 
        new MyObject()
        {
            MyEnumValue = MyEnum.MyEnumStringValue,
        }};
    grid.DataBind();
}

public class MyObject
{
    public MyEnum MyEnumValue { get; set; }
}
public enum MyEnum
{
    MyEnumStringValue,
}

这将导致: Chrome 32.0.1700.107:
<input type="hidden" name="grid$ctl02$hdnField" id="grid_hdnField_0" value="MyEnumStringValue">

IE 11.0.9600.16518:

<input name="grid$ctl02$hdnField" id="grid_hdnField_0" type="hidden" value="MyEnumStringValue">

所以问题可能出在其他地方,你能否发布更多的代码/细节?

我已经离开了这家公司,所以不再有代码访问权限。如果它在一个原始设置中运行正常,那么它必须是页面/站点中的其他问题或者是我使用的特定版本的IE中的错误(现在无法访问)。谢谢。 - mizzle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接