如何添加<%=%>代码隐藏中的标记

时间:2013-03-27 07:29:05

标签: c# javascript asp.net user-controls tags

我在代码隐藏中创建了一些输入控件(文本),作为动态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"; 
    } 
} 

有什么想法吗?

感谢!!!

3 个答案:

答案 0 :(得分:1)

值总是消失,因为您没有在帖子后面保留数据。我甚至没有这个

  

“&lt;%= this.InputValue%&gt;”

会以您认为的方式渲染。 &lt; %%&gt;标签由服务器呈现,而不是浏览器。相反,使用视图状态或会话来跨帖子保留值。如果您需要帮助,请发布更多您的控件代码以及您遇到的问题

答案 1 :(得分:1)

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

当您向页面的控件集合动态添加控件时,需要在正确的时间进行设置。从上面链接的文档:

  

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

     

将此事件用于以下事项:
  ......

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

...

这样,您可以使用普通的ASP.NET视图状态在PostBacks中保留信息。

如果您在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\" />")
}

答案 2 :(得分:1)

我建议您在代码后面使用UpdatePanel.Update method,以便使用新值更新您的内容

注意:您的字段InputValue应位于UpdatePanel部分,以便刷新

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