0

私のコードの何が問題になっている可能性がありますか?Visual Studioは、警告やエラーを受け取りません。

ASP.NET、エラーレンダリングコントロール-WebUserControl、未処理の例外が発生しました。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs"         Inherits="WebUserControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server">

    protected void UploadButton_Click(object sender, EventArgs e)
    {
        // Specify the path on the server to
        // save the uploaded file to.
        String savePath = @"c:\temp\uploads\";

        // Before attempting to perform operations
        // on the file, verify that the FileUpload 
        // control contains a file.
        if (FileUpload1.HasFile)
        {
            // Get the name of the file to upload.
            String fileName = FileUpload1.FileName;

            // Append the name of the file to upload to the path.
            savePath += fileName;


            // Call the SaveAs method to save the 
            // uploaded file to the specified path.
            // This example does not perform all
            // the necessary error checking.               
            // If a file with the same name
            // already exists in the specified path,  
            // the uploaded file overwrites it.
            FileUpload1.SaveAs(savePath);

            // Notify the user of the name of the file
            // was saved under.
            UploadStatusLabel.Text = "Your file was saved as " + fileName;
        }
        else
        {
            // Notify the user that a file was not uploaded.
            UploadStatusLabel.Text = "You did not specify a file to upload.";
        }

    }

</script>

<html  >
<head id="Head1" runat="server">
    <title>FileUpload Example</title>
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
        .style2
        {
            height: 26px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <table class="style1">
        <tr>
            <td>
                Select a file to upload:</td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td class="style2">

       <asp:FileUpload id="FileUpload1"                 
           runat="server">
       </asp:FileUpload>

            </td>
            <td class="style2">
            </td>
        </tr>
        <tr>
            <td>

       <asp:Button id="UploadButton" 
           Text="Upload file"
           OnClick="UploadButton_Click"
           runat="server">
       </asp:Button>    

            </td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td>

       <hr />

            </td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td>

       <asp:Label id="UploadStatusLabel"
           runat="server">
       </asp:Label>        
            </td>
            <td>
                &nbsp;</td>
        </tr>
    </table>
    </form>
    <p>
        &nbsp;</p>
</body>
</html>

Webブラウザからのエラーメッセージ:

    Server Error in '/WebSite2' Application.
--------------------------------------------------------------------------------

You can only have one <head runat="server"> control on a page. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: You can only have one <head runat="server"> control on a page.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[HttpException (0x80004005): You can only have one <head runat="server"> control on a page.]
   System.Web.UI.HtmlControls.HtmlHead.OnInit(EventArgs e) +1762795
   System.Web.UI.Control.InitRecursive(Control namingContainer) +333
   System.Web.UI.Control.InitRecursive(Control namingContainer) +210
   System.Web.UI.Control.InitRecursive(Control namingContainer) +210
   System.Web.UI.Control.AddedControl(Control control, Int32 index) +198
   System.Web.UI.ControlCollection.Add(Control child) +80
   System.Web.UI.WebControls.WebParts.WebPartManagerControlCollection.AddWebPartHelper(WebPart webPart) +220
   System.Web.UI.WebControls.WebParts.WebPartManagerControlCollection.AddWebPartsFromZone(WebPartZoneBase zone, WebPartCollection webParts) +607
   System.Web.UI.WebControls.WebParts.WebPartManager.RegisterZone(WebZone zone) +240
   System.Web.UI.WebControls.WebParts.WebZone.OnInit(EventArgs e) +95
   System.Web.UI.WebControls.WebParts.WebPartZone.OnInit(EventArgs e) +9
   System.Web.UI.Control.InitRecursive(Control namingContainer) +333
   System.Web.UI.Control.InitRecursive(Control namingContainer) +210
   System.Web.UI.Control.InitRecursive(Control namingContainer) +210
   System.Web.UI.Control.InitRecursive(Control namingContainer) +210
   System.Web.UI.Control.InitRecursive(Control namingContainer) +210
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378
4

3 に答える 3

2

なぜあなたは完全なHTML構造を持っているのUserControlですか?別のページでこのコントロールを使用するときはいつでも、別のドキュメント内に完全なHTMLドキュメントを挿入しています。コントロールをレンダリングするために必要なhtmlのみを含めてください...ページ全体ではありません

編集..私が言った方法を推測してください。それは答えよりもコメントとしてより理にかなっているでしょう。質問に答えるには...コントロールには完全なhtml構造が含まれているため、Webformsページで使用すると、フレームワークがhtml構造全体を別のページに挿入しようとします。

コントロールをレンダリングするために必要なだけのhtmlを.ascx....に配置します。html構造全体ではありません。

于 2012-10-24T18:28:12.810 に答える
2

ユーザーコントロールはページのコンテンツに埋め込まれているため、ヘッドセクションを含めるべきではありません。実際のページにのみヘッダーを付ける必要があります。

また、html、bodyなどを含む他のドキュメントセクションも含まないようにする必要があります。

于 2012-10-24T18:31:14.673 に答える
0

宣言を次のように置き換える必要があります:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

または、htmlタグとheadタグを削除する必要があるカスタムコントロールであることを本当に意味していました。

于 2012-10-24T18:25:04.230 に答える