关于类型“LinkButton”的控件“xxx”必须放在具有 runat=server 的窗体标记内问题的解决方案
1.首先确认LinkButton控件包含在Form中,检查该Form有无runat标记,如果有,排除Form原因,请继续看。
2.如果看到这里,估计你是在做Excel导出功能。在后台代码中重写VerifyRenderingInServerForm方法:
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for
}
个人认为,出现此问题的原因是导出Excel时,浏览器响应的类型为context.Response.ContentType=" application/excel " ; 而非常规的"text/html"类型,此时浏览器响应服务器下载Excel,已经"忘 记"当前页面(不知道这么说恰不恰当),只记得响应当前用户的Excel导出请求,故出现LinkButton没有加载在Form中的异常情况。
MSDN对此方法的解释:
必须位于 <form runat=server> 标记中的控件可以在呈现之前调用此方法,以便在控件被置于标记外时显示错误消息。 发送回或依赖于注册的脚本块的控件应该在 Control.Render 方法的重写中调用此方法。 呈现服务器窗体元素的方式不同的页可以重写此方法以在不同的条件下引发异常。
如果回发或使用客户端脚本的服务器控件没有包含在 HtmlForm 服务器控件 (<form runat="server">) 标记中,它们将无法正常工作。 这些控件可以在呈现时调用该方法,以在它们没有包含在 HtmlForm 控件中时提供明确的错误消息。
开发自定义服务器控件时,通常在为任何类型的输入标记重写 Render 方法时调用该方法。 这在输入控件调用 GetPostBackEventReference 或发出客户端脚本时尤其重要。 复合服务器控件不需要作出此调用。
3.小伙伴们可能会发现,重写VerifyRenderingInServerForm后页面依然报错,不过不再报'类型“LinkButton”的控件“xxx”必须放在具有 runat=server 的窗体标记内'这个错了,这是一个好消息。具体错误信息为:只能在执行 Render() 的过程中调用 RegisterForEventValidation(RegisterForEventValidation can only be called during Render();)
解决办法:在前台aspx页面的page指令中添加EnableEventValidation = "false",修改如下:
<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeFile="ExportRepeater.aspx.cs" Inherits="ExportRepeater" %>
关于类型“LinkButton”的控件“xxx”必须放在具有 runat=server 的窗体标记内问题的解决方案的更多相关文章
- 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
错误的写法: if (this.GridView1.Rows.Count > 0) { string style = @"<style& ...
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 .
错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 在做导出数据到EXCEL程序中,出现了错误提示:类型“GridView”的控件“Gr ...
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
导出到Excel方法: <span style="color: rgb(0, 0, 255);">public</span> <span style= ...
- 类型“XXX”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。
问题:类型“Grid1”的控件“XXXX”必须放在具有 runat=server 的窗体标记内. 注:Grid1为表格的ID. 查找网上的解决大致为: 1)把Grid放到<form runat= ...
- 注意:"AspNetPager”的控件“AspNetPager1”必须放在具有 runat=server 的窗体标记内
应加: <form id="form1" runat="server"> </form> 否则一开始什么也不显示,页面控件看不见,加上a ...
- 类型“GridView”的控件必须放在具有 runat=server 的窗体标记内?
Response.AddHeader("content-disposition", "attachment;filename=CRM.xls") Respons ...
- GridView”的控件 必须放在具有 runat=server 的窗体标记内 “错误提示”
在做导出数据到EXCEL程序中,出现了错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记 解决办法 重写 VerifyRendering ...
- dev的控件放在没有runat="server"的标签中,回调出现的问题
dev的控件放在没有runat="server"的标签中,第一次回调是会刷新页面, 有runat="server"时不会刷新页面
- WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书
原文:WPF中Popup控件在Win7以及Win10等中的对齐点方式不一样的解决方案 - 简书 最近项目中使用弹出控件Popup,发现弹出框的对齐方式在不同的系统中存在不同(Popup在win10上是 ...
随机推荐
- Android MuPDF 部署
MuPDF是一款轻量级的开源软件,可以用来阅读PDF文件.下载完源代码以后,想要运行成功,除了Android SDK之外,还需要Android NDK环境,因此有点麻烦. 但是一旦安装完必须的环境以后 ...
- poj3083
Children of the Candy Corn Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8046 Accep ...
- [转]eclipse中使用maven插件的时候,运行run as maven build的时候报错
转至:http://fxb4632242.iteye.com/blog/2193945 -Dmaven.multiModuleProjectDirectory system propery is no ...
- 又遇BUG-ORA-01148:数据文件忽然变为recover状态
现象: RAC环境,数据文件状态变为recover,查看alert日志有如下报错: Wed Jun 26 02:31:03 2013 Thread 1 advanced to log sequence ...
- 神经网络环境搭建,windows上安装theano和keras的流程
今天碰到有朋友问道怎么在windows下安装keras,正好我刚完成搭建,总结下过程,也算是一个教程吧,给有需要的朋友. 步骤一:安装python. 这一步没啥好说的,下载相应的python安装即可, ...
- python视频教程大全
python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...
- iOS开发-GCD和后台处理
一些生命周期函数的调用时间 打开应用时,调用 applicationWillEnterForeground: applicationDidBecomeActive: 按Home键,调用 applica ...
- cocos2d-x CCScrollView
转自:http://www.cnblogs.com/dcxing/archive/2012/12/31/2840217.html ScrollView一般用在游戏的关卡选择这种类似的场景还有帮助这种场 ...
- Codeforces Beta Round #51 D. Beautiful numbers 数位dp
D. Beautiful numbers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/55/p ...
- BZOJ 1968: [Ahoi2005]COMMON 约数研究 水题
1968: [Ahoi2005]COMMON 约数研究 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeO ...