Asp.net按钮对象-runat服务器问题我在服务器端代码上创建按钮时遇到了一些问题。我正在使用stringbuilder在html中构建一个表,我想创建一个新的按钮对象并将其传递给我的stringbuilder对象。我遇到的问题是我的页面在调试时无法编译。我想给我的按钮对象一个runat="server"属性,但我不知道该怎么做。按钮add_img_popup=newButton();add_img_popup.Text="添加新图片";//文本add_img_popup.Click+=newEventHandler(addImgPopup_Click);//点击事件处理器add_img_popup.Enabled=true;add_img_popup.ID="btn_add_img_;//programmaticidPage.Controls.Add(add_img_popup);//添加到页面控件以便渲染st.Append("");st.Append("");st.Append(add_img_popup);//传递给字符串生成器st.Append("");st.Append("");以及从服务器给我的消息。'/'应用程序服务器错误。控件'btn_add_img_popup'类型为'Button'必须放置在带有runat=server的表单标记内。说明:在执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的起源位置的更多信息。异常详细信息:系统.Web.HttpException:类型为“Button”的控件“btn_add_img_popup”必须放置在具有runat=server的表单标记内。源错误:在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。堆栈跟踪:[HttpException(0x80004005):类型为“Button”的控件“btn_add_img_popup”必须放置在具有runat=server的表单标记内。]System.Web.UI.Page.VerifyRenderingInServerForm(Control控件)+8702387System.Web.UI.WebControls.Button.AddAttributesToRender(HtmlTextWriter编写器)+54System.Web.UI.WebControls.WebControl.RenderBeginTag(HtmlTextWriter编写器)+20System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter编写器)+20System.Web.UI。Control.RenderControlInternal(HtmlTextWriter编写器,ControlAdapter适配器)+27System.Web.UI.Control.RenderControl(HtmlTextWriter编写器,ControlAdapter适配器)+99System.Web.UI.Control.RenderControl(HtmlTextWriter编写器)+25System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter编写器,ICollection子级)+134System.Web.UI.Control.RenderChildren(HtmlTextWriter编写器)+19System.Web.UI.Page.Render(HtmlTextWriter编写器)+29System.Web.UI.Control.RenderControlInternal(HtmlTextWriter编写器,ControlAdapter适配器)+27System.Web.UI.Control.RenderControl(HtmlTextWriter编写器,ControlAdapter适配器)+99System.Web.UI.Control.RenderControl(HtmlTextWriter编写器)+25System.Web.UI。Page.ProcessRequestMain(BooleanincludeStagesBeforeAsyncPoint,BooleanincludeStagesAfterAsyncPoint)+1266不要这样做:Page.Controls.Add(add_img_popup);在Form标签内的页面中有一个带有runat=server的div,如果div被称为myDiv然后执行以下操作:myDiv.Controls.Add(add_img_popup);看起来你可能有一些问题:失踪更少的表单标记确保您的页面具有指定“runat=server”的表单标记背后的代码://创建按钮控件Buttonadd_img_popup=newButton();add_img_popup.Text="添加新图片";//添加占位符//(在表单内)ph1.Controls.Add(add_img_popup);将按钮添加到stringbuilder将控件添加到stringbuilder不会导致它被呈现。您需要首先使用以下方法将控件呈现为字符串:publicstringRenderControl(Controlctrl){StringBuildersb=newStringBuilder();StringWritertw=newStringWriter(sb);HtmlTextWriterhw=newHtmlTextWriter(tw);ctrl.RenderControl(硬件);返回sb.ToString();您可以像这样使用RenderControl方法:st.Append("");st.Append("");st.Append(RenderControl(add_img_popup));st.Append("");st.Append("");虽然这将呈现控件,但您在处理回发事件(addImgPopup_Click)时可能会遇到一些问题,因为必须在每次页面加载时重新创建控件。为什么需要将控件添加到StringBuilder中,而不是将控件直接放在页面上呢?通常最好使用现有的ASP.NET控件来实现您的目标,而不是先将字符串呈现为字符串。还有另一种方法可以做到这一点......在页面上放置一个,为其创建一个点击事件,并将其标记为隐藏。然后,当你构建表格时,你只需要在一个普通的html按钮中编写一个带有OnClick事件的代码来触发按钮回调......正如错误所说,你必须将按钮放在一个标签中。因此很容易将其添加到您的流中。以上就是C#学习教程:Asp.net按钮对象-runat服务器问题分享的全部内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注---本文收集自网络,并不代表侵权,如有涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
