我整个上午一直在尝试这个,没有结果。我似乎无法弄清楚我做错了什么。我已经检查了两个链接(在许多其他无用的链接中)并且尚未解决我的问题。这是一个WebUserControl ......
收到以下错误: 必须将带有'TextBox'类型的控件'HeadContent_CareersViewPosting_txtFirstName'放在带有runat = server的表单标记内。
已经尝试过建议here,here和here,但没有结果。仍然收到完全相同的消息。一些新的建议将不胜感激!
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Careers View Posting.ascx.cs" Inherits="ascxStagingApplication.Careers.Careers_View_Posting" %>
<asp:Panel ID="pnlResume" runat="server">
<table ID="tblMain" runat="server">
<tr>
<td>
<asp:Label ID="lblFirstName" runat="server" Text="* First Name"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblLastName" runat="server" Text="* Last Name"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblEmail" runat="server" Text="* Email"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblResume" runat="server" Text="* Resume"></asp:Label>
</td>
<td>
<asp:FileUpload ID="fupResume" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Button ID="btnSubmit" runat="server" Text="Submit"/>
</td>
</tr>
</table>
</asp:Panel>
用户控件当前正被放置在虚拟网页上进行测试。这是'虚拟'页面代码。
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Page Careers View Posting.aspx.cs" Inherits="ascxStagingApplication.Careers.Page_Careers_View_Posting" %>
<%@ Register Src="~/Careers/Careers View Posting.ascx" TagPrefix="uc1" TagName="CareersViewPosting" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<uc1:CareersViewPosting runat="server" id="CareersViewPosting" />
</asp:Content>
答案 0 :(得分:13)
在ASPNet网络表单中 - 所有内容都需要在表单标记中运行。
所有服务器控件都必须显示在<form>
标记内,<form>
标记必须包含runat="server"
属性。 runat="server"
属性表示应在服务器上处理表单。它还表明服务器脚本可以访问所附的控件:
<form runat="server">
...HTML + server controls
</form>
在您的虚拟页面中,尝试以下操作以允许服务器控件运行。
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Page Careers View Posting.aspx.cs" Inherits="ascxStagingApplication.Careers.Page_Careers_View_Posting" %>
<%@ Register Src="~/Careers/Careers View Posting.ascx" TagPrefix="uc1" TagName="CareersViewPosting" %>
<form runat="server">
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
<uc1:CareersViewPosting runat="server" id="CareersViewPosting" />
</asp:Content>
</form>
另外 - 检查你的〜/ Site.Master文件是否包含<form runat="server">
,如果不是,那么将它作为包含所有封闭表单标记的地方是相当典型的。
您可以在此处阅读更多内容:http://www.w3schools.com/aspnet/aspnet_forms.asp
答案 1 :(得分:2)
如果您将runat =“ server”放在右边,但仍然出错,请尝试以下代码。
public override void VerifyRenderingInServerForm(Control control)
{
/* Confirms that an HtmlForm control is rendered for the specified ASP.NET
server control at run time. */
}
cr。来自Rohit Rao
对不起,我的英语不好。
答案 2 :(得分:0)
所有服务器控件都必须显示在<form>
代码中,<form>
代码必须包含runat="server"
属性。
所有Asp.net控件都是服务器控件,因此这些控件应放在带有runat="server"
属性的表单标记内,如下所示
<form runat="server">
place server controls here...
</form>
答案 3 :(得分:-2)
>Button bt = new Button();
>bt.ID = "dd";
>bt.Text = "Click Me";
>this.Form.Controls.Add(bt);
答案 4 :(得分:-3)
你可以添加
<form runnat="server">
// add content placeholder
</form>