一页只能有一个服务器端 Form 标记 我用Page.RenderControl获取当前页面的HTML源码,却总是报“一页只能有一个服务器端 Form 标记”的错误,在网上找了很多资料,试了很多种方法都没有解决。无奈之下只有在网上求救了,有哪位高手能帮我,在下感激不尽,可是我没有多少分呢,分虽少也是一点心意,希望不要介意。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Form标记是大于一个HtmlTextWriter htw = new HtmlTextWriter(sw);Page page = new Page();page.RenderControl(htw); 其实服务器端form标记是可以有多个的,但是那样的前提是只显示一个,其他的隐藏。 Form标记可以有多个,但有runat="server" 属性的Form标记只能有一个 你的页面上有多个form吧~~或者是你用的母版或是用户控件有form 仔细检查下~~没用的删掉 就行 可是HTML源码只有一个Form呢,我按一楼说的用Page page = new Page(); page.RenderControl(htw); 这个page没有RenderControl的方法。 我知道只能有一个Form有runat="server" 属性,可是我实在找不出怎么会多了一个,我把代码贴出来,望哪位能帮我看看是哪里出了问题。谢谢!!!我在页面上放了一个Button,在他的Click事件{ StringWriter stringWriter = new StringWriter(); HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); if (Visible) { this.Page.RenderControl(htmlWriter); } html = stringWriter.GetStringBuilder().ToString(); string exportDir = HttpContext.Current.Server.MapPath(".") + "\\vou\\"; string exportServerPath = exportDir + "vou.doc"; StreamWriter sw = new StreamWriter(exportServerPath, false); sw.Write(html); sw.Close(); sw.Dispose(); //将文件输出到客户端 System.IO.FileInfo fileInfo = new System.IO.FileInfo(exportDir); HttpResponse resp; resp = Page.Response; resp.Clear(); resp.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode(exportDir)); resp.AddHeader("content-length", fileInfo.Length.ToString()); resp.ContentType = "application/octet-stream"; resp.ContentEncoding = System.Text.Encoding.Default; resp.WriteFile(exportServerPath); resp.End(); resp.Close();} 我用 string URL = Request.Url.ToString(); HttpWebRequest WRq = (HttpWebRequest)WebRequest.Create(@URL); HttpWebResponse WRs = (HttpWebResponse)WRq.GetResponse(); Stream S = WRs.GetResponseStream(); StreamReader R = new StreamReader(S, System.Text.Encoding.UTF8); string Str = R.ReadToEnd(); Response.Write(Str); 替代 this.Page.RenderControl(htmlWriter); 就不会出现那个问题了,虽然把问题解决了,可是之前的方法为什么会报错误还是没有找到方案。 前台控件自定义属性,后台根据该属性获取该控件 如何用js判断TreeView至少要选择一个节点? ASP.NET如何实现水晶报表的网络打印?请高手指教...在线等... 求aspnet+C# 存储Oracle的CLob字段的源代码! 关于数据库连接的问题 如何快速让20多个TextBox.Text清空?(后台写法) 请教:在服务器端(C#)怎么判断客户端控件的属性值?急!!! 在线等待!!! 苦呀!1! treeview vs2010发布web项目时特别慢 如何判断一个页面是刷新还是关闭? 如何定义规则提示
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page page = new Page();
page.RenderControl(htw);
但是那样的前提是只显示一个,其他的隐藏。
或者是你用的母版或是用户控件有form 仔细检查下~~
没用的删掉 就行
page.RenderControl(htw); 这个page没有RenderControl的方法。
{
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
if (Visible)
{
this.Page.RenderControl(htmlWriter);
}
html = stringWriter.GetStringBuilder().ToString();
string exportDir = HttpContext.Current.Server.MapPath(".") + "\\vou\\";
string exportServerPath = exportDir + "vou.doc";
StreamWriter sw = new StreamWriter(exportServerPath, false);
sw.Write(html);
sw.Close();
sw.Dispose();
//将文件输出到客户端
System.IO.FileInfo fileInfo = new System.IO.FileInfo(exportDir);
HttpResponse resp;
resp = Page.Response;
resp.Clear();
resp.AddHeader("content-disposition", "attachment;filename=" + Server.UrlEncode(exportDir));
resp.AddHeader("content-length", fileInfo.Length.ToString());
resp.ContentType = "application/octet-stream";
resp.ContentEncoding = System.Text.Encoding.Default;
resp.WriteFile(exportServerPath);
resp.End();
resp.Close();
}
HttpWebRequest WRq = (HttpWebRequest)WebRequest.Create(@URL);
HttpWebResponse WRs = (HttpWebResponse)WRq.GetResponse();
Stream S = WRs.GetResponseStream();
StreamReader R = new StreamReader(S, System.Text.Encoding.UTF8);
string Str = R.ReadToEnd();
Response.Write(Str);
替代 this.Page.RenderControl(htmlWriter); 就不会出现那个问题了,虽然把问题解决了,可是之前的方法为什么会报错误还是没有找到方案。