2011-02-10 85 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頁面來說很重要。