【问题标题】:name attribute of a control in asp.net takes id by defaultasp.net 中控件的 name 属性默认采用 id
【发布时间】:2013-07-26 11:12:08
【问题描述】:

为什么asp.net中控件的“name”属性在asp.net中默认取“id”值?

<%var ctrl =new  HtmlInputText();



 ctrl.ID = "ctrl_id";
 ctrl.Name="ctrl_name";

   StringBuilder sb = new StringBuilder();
  System.IO.StringWriter sw = new System.IO.StringWriter(sb);
  HtmlTextWriter writer = new HtmlTextWriter(sw);

  ctrl.RenderControl(writer);%>
  <%=sb.ToString()%>

上面的代码渲染了一个控件,但是name属性的值是“ctrl_id”而不是“ctrl_name”

【问题讨论】:

  • 两个都试过了吗:cntrl.Attributes.Add("ID","cntrl_id"); cntrl.Attributes.Add("name","cntrl_name");

标签: html asp.net xml


【解决方案1】:

尝试:

ctrl.Attributes.Add("name","ctrl_name");

【讨论】:

  • 我试过了!din 工作,我试过类似 ctrl.Attributes.Add(ctrl.Name, "ctrl_name");及其添加了一个额外的属性,如 ctrl_id="ctrl_name",我不明白它是如何使用 ctrl_id 的,我说 ctrl_name
  • 使用 ctrl.Attributes.Add("name","ctrl_name");
  • 是的,是的,我已经尝试过了,但名称仍然包含“ctrl_id”
【解决方案2】:

这有点废话,但是如果您要向页面动态添加控件,通常最好将控件直接添加到另一个控件的子控件集合中,而不是 Response.Write(ing) 将其添加到页面。

var ctrl =new  HtmlInputText();
ctrl.ID = "ctrl_id";
ctrl.Name="ctrl_name";
//PlaceHolder1 has been defined in the ASPX page
PlaceHolder1.Controls.Add(ctrl);

【讨论】:

  • 谢谢克里斯!但问题不在于添加控件,而在于我如何覆盖“name”的值,因为它默认采用 id 的值
猜你喜欢
  • 2013-12-21
  • 2010-10-07
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
相关资源
最近更新 更多