【发布时间】:2016-07-25 18:38:45
【问题描述】:
您好,我有一组用于“是”和“否”值的单选按钮,它们的名称为“选择”。默认情况下选中“是”。它们都是 runat="server"。我在回发中阅读了如下选择。只要验证不失败,它就可以正常工作。例如,如果我选择“否”并且回发时验证失败,我仍然会看到“否”被选中。但是,如果我在更正所有内容后提交表单,则在服务器端读取的值是“是”!这是 .net 中的错误吗?如果是,我该如何解决?
foreach (string key in Request.Form.AllKeys)
{
if (key.EndsWith("choice"))
return Request.Form[key] == "yes";
}
【问题讨论】:
-
aspx 页面是否启用了“EnableViewState”?我曾经遇到过类似的问题,控件在表单上显示一件事,但提交的数据完全不同。当我将 EnableViewState 设置为 true 时,它已修复。
-
是的,视图状态已启用。这就是表单仍然保留回发之前选择的值的方式。因此,如果我在回发之前选择了“否”,重新渲染的页面仍然显示“否”被选中。但是,如果我在此之后提交,则读回的值为“是”
-
明白。在我的例子中,我在我的控件上启用了 ViewState,但没有在页面上启用,所以它也会跟踪回发的更新,但页面本身显然并不关心,所以结果有时会变得非常不寻常。抱歉,我帮不上什么忙了。
-
好吧,这很奇怪。我添加 enableviewstate="true" 只是为了它,它工作!然后我删除了它,它现在仍然有效!见鬼!
-
如果您发出 EnableViewState="false" 而不是仅仅删除 EnableViewState,它是否会被复制?
标签: c# asp.net postback radio-button