2013-03-27 83 views
1

我在后台代码动态RadiobuttonLists的一部分(这样一个文本框坐在旁边的每个单选按钮的)创建了几个输入控件(文本):如何添加<%= %>标记的代码隐藏

RadioButtonList radioOption = new RadioButtonList(); 

radiobuttonlist.Items.Add(new ListItem(dt.Rows[i][9].ToString() + " <input id=\"" + name + "\" runat=\"server\" type=\"text\" value=\"Enter text\" />") 

所有的控件都在UpdatePanel中。

如何在我的代码更新输入标签后面,所以我可以得到价值是这样的:

value="<%= this.InputValue %>" /> 

的原因是,这样我可以在Page_Load访问/设置的值(如在回发上,输入文字消失):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     this.InputValue = "something"; 
    } 
} 

任何想法?

谢谢!

+2

您可以直接在您的代码后面访问该值。无需使用<%= %> – amesh 2013-03-27 07:35:46

+0

我应该更新我的问题 - 我这样做的原因是因为每次回发时,输入文本消失。我正在尝试将用户输入文本绑定到输入控件。 – 2013-03-27 07:37:26

回答

1

该值总是消失,因为您没有在后期保留数据。我甚至不这样

“<%= this.InputValue%>”

会使你认为它会的方式。 <%>标签由服务器呈现,而不是浏览器呈现。相反,使用视图状态或会话来持续发布帖子后的值。如果您需要帮助,请发布更多控制代码以及您卡住的位置

+0

谢谢杰森。非常感激。 – 2013-03-28 00:43:41

1

我认为您遇到ASP.NET Page Life Cycle问题。

当您将控件动态添加到页面的控件集合中时,您需要在正确的时间设置它们。从上面的链接文档:

起步阶段后引发完成和初始化 阶段开始之前。

使用此事件的以下内容:
...

  • 创建或重新创建动态控件。

...

这种方式,您可以只使用普通的ASP.NET视图状态在回发信息仍然存在。

如果您在Page_PreInit事件期间创建动态RadioButtonLists,我想大多数问题都会得到解决。

protected void Page_PreInit(Object sender, EventArgs e) 
{ 
    RadioButtonList radioOption = new RadioButtonList(); 
    radiobuttonlist.Items.Add(new ListItem(dt.Rows[i][9].ToString() + " <input id=\"" + name + "\" runat=\"server\" type=\"text\" value=\"Enter text\" />") 
} 
+0

嗨jadarnel - 所有的动态控件都是在OnInit函数中创建的,而不是Page_Load。我的所有用户控件例如。表,radiobuttonlist,复选框的值保留,因为这一点,除了输入控件(这是radiobuttonlist的一部分)...因此我的问题...任何想法? – 2013-03-28 00:40:41

1

我建议你在你的代码中使用UpdatePanel.Update method后面,以更新与新价值的内容

注意:你的领域inputValue将每亩在部分的UpdatePanel,以刷新

链接:http://msdn.microsoft.com/fr-fr/library/system.web.ui.updatepanel.update.aspx

+0

嗨Frederique,我已经使用UpdatePanel来包含我所有的动态控件。我所有的用户控件,例如表格,复选框,单选按钮列表,文本框的价值因此保留下来。但是,我的输入控件(它是radiobuttonlist的一部分)是唯一没有保留值的控件。因此我的问题。有任何想法吗? – 2013-03-28 00:43:12