【问题标题】:Must be Placed Inside a Form Tag With runat=server必须放在带有 runat=server 的表单标签内
【发布时间】:2014-02-28 12:07:01
【问题描述】:

我整个早上都在尝试这个,但没有结果。我似乎无法弄清楚我做错了什么。我已经检查了这两个链接(以及许多其他无用的链接),但尚未解决我的问题。这是一个 WebUserControl...

收到以下错误:

控制类型的“HeadContent_CareersViewPosting_txtFirstName” 'TextBox' 必须放在带有 runat=server 的表单标签内。

已经尝试了hereherehere 的建议,但没有结果。仍然收到完全相同的消息。一些新的建议将不胜感激!

<%@ 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>

【问题讨论】:

  • 你在哪里使用这个UserControl
  • @TimSchmelter 添加了上面的页面代码。很抱歉!

标签: c# html asp.net tags runatserver


【解决方案1】:

如果你把 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】:
    >Button bt = new Button();
    >bt.ID = "dd";
    >bt.Text = "Click Me";
    >this.Form.Controls.Add(bt);
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    【解决方案3】:

    在 ASPNet 网络表单中 - 一切都需要在表单标签内运行。

    所有服务器控件都必须出现在&lt;form&gt; 标记内,并且&lt;form&gt; 标记必须包含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 文件是否包含 &lt;form runat="server"&gt; 如果不是 -a s,那么将其作为放置所有封闭表单标签的地方是相当典型的。

    您可以在这里阅读更多内容:http://www.w3schools.com/aspnet/aspnet_forms.asp

    【讨论】:

    【解决方案4】:

    所有服务器控件都必须出现在&lt;form&gt; 标记内,并且&lt;form&gt; 标记必须包含runat="server" 属性。

    所有的Asp.net控件都是服务器控件,所以这些应该放在带有runat="server"属性的form标签中,像这样

    <form runat="server">
    
    place server controls here...
    
    </form>
    

    【讨论】:

      【解决方案5】:

      你可以添加

      <form runnat="server">
       // add content placeholder
      </form>
      

      【讨论】:

      • 应该运行而不是运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2017-08-27
      • 2015-05-10
      • 1970-01-01
      • 2019-09-09
      相关资源
      最近更新 更多