2010-05-03 92 views
3

嗨我有一组单选按钮,用于“yes”和“no”值,其名称为“choice”。默认选中“是”。他们都runat =“服务器”。我阅读下面的回发选项。只要验证不失败,它就可以很好地工作。例如,如果我选择“否”并且在回发时验证失败,我仍然看到选择“否”。但如果我在更正所有内容后提交表单,则在服务器端读取的值为“是”!这是.net中的一个错误,如果是这样,我该如何解决这个问题?单选按钮在回发时丢失数值

foreach (string key in Request.Form.AllKeys) 
{ 
    if (key.EndsWith("choice")) 
     return Request.Form[key] == "yes"; 
} 
+0

是否.aspx页面都“的EnableViewState”启用?我遇到过一次类似的问题,控件在窗体上显示了一件事,但提交的数据完全不同。当我将EnableViewState设置为true时,它已经修复。 – 2010-05-03 16:39:58

+0

是视图状态已启用。这就是表单仍然保留在回发之前选择的值的方式。因此,如果我在回发之前选择了“否”,则重新呈现的页面仍显示为“否”。但是,如果在此之后提交,则回读的值为“是” – Riz 2010-05-03 16:41:25

+0

了解。就我而言,我对我的控制启用ViewState的,而不是网页,所以它会继续回传跟踪更新为好,但网页本身显然没有在意,那么结果将在时间变得相当不寻常。对不起,我无法进一步帮助。 – 2010-05-03 16:44:59

回答

0

这是一个问题,我禁用更深层次的viewstate。

0

如果您绑定的单选按钮或其祖先控件之一,请务必检查回传设定初始值时:

if (!IsPostBack) 
    YourControlId.DataBind();