2011-02-10 48 views
3

这是一个非常简单的问题,因为我是新来asp.net我试图建立一个与我们联系页面,我收到以下错误。ASP.net联系我们

“类型‘文本框’的控制‘ContentPlaceHolder1_nameBox’必须放在一个窗体标记内与RUNAT =服务器”

以下是到目前为止我的代码用于该页面。

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="ContactUs.aspx.cs" Inherits="Craigavon_Aquatics.ContactUs" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
<h2> 
    Contact Us</h2> 
<p> 
    Please fill in the form below to contact us.</p> 

<p> 
    &nbsp;</p> 

</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
<table style="width: 100%"> 
    <tr> 
     <td> 
      Name: (Required)</td> 
    </tr> 
    <tr> 
     <td> 
<asp:TextBox ID="nameBox" runat="server" Width="278px"></asp:TextBox>     
     </td> 
    </tr> 
    <tr> 
     <td> 
      Email: (Required)</td> 
    </tr> 
    <tr> 
     <td> 

     </td> 
    </tr> 
</table> 
</asp:Content> 

回答

4

两个地方的包装<form runat="Server">在母版页周围的ContentPlaceHolder,或<asp:Content>标签内部的页面上添加一个<form runat="server">围绕现有的内容。

Site1.Master

<form runat="server"> 
    <asp:ContentPlaceHolder ...></asp:ContentPlaceHolder> 
</form> 

-OR-

ContactUs.aspx

<asp:Content ...> 
    <form runat="server"> 
    ...existing HTML code... 
    </form> 
</asp:Content> 
+0

+1:很好的解释! – naveen 2011-02-10 17:25:31

0

找到与的 'ContentPlaceHolder1_nameBox' 的ID的控制,并放置在之间.aspx的表单/表单标签来摆脱错误。 ASP .Net Server控件必须位于Form标签内。

+0

非常感谢你的帮助 – Inkey 2011-02-10 17:28:43

0

您需要<form runat="server"> //你的代码,控制.. </form>标签包围你的代码。这可能是从你的母版页

0

缺少你必须检查并确保您拥有母版页上声明的形式。既然我看不到那个,那么如果那个错误出现了,我将不得不假设没有一个。

+0

是啊这是什么问题是非常感谢 – Inkey 2011-02-10 17:35:17

0

最简单的办法就是在你的母版里面包裹身体。
但你也可以像这样覆盖它。

public override void VerifyRenderingInServerForm(Control control) 
{ 
    return; 
} 
0

在母版页中所有的控制应该是一个<form>...</form>标签里面,包括您的内容占位符。

这有什么好做的一个“联系页面”。这对于一般的ASP.NET页面来说很重要。