簡體   English   中英

使用UpdatePanel時未設置錯誤對象引用

[英]Error Object reference not set when using UpdatePanel

我遇到此錯誤“ 未設置對象引用 ...。”,我檢查了我的代碼,並發現UpdatePanel中的錯誤,當我將其刪除時,代碼運行良好,但必須使用它來防止重新加載所有頁面。

<div>
   <fieldset style="width: 498px; text-align: right; padding: 5px; direction: rtl;">
       <legend>what do y think ? </legend>
       <div class="add-post">
           <textarea class="textarea" cols="3" rows="3" runat="server" id="txpost"></textarea>
           <asp:RequiredFieldValidator ID="RVAddPost" runat="server" ForeColor="Red" ErrorMessage="*"
               ControlToValidate="txpost" ValidationGroup="AddUserPost">*</asp:RequiredFieldValidator>
       </div>
       <asp:UpdatePanel ID="UPAddUserPost" runat="server">
           <ContentTemplate>
               <div class="add-post-control">
                   <div class="post">
                       <asp:Button Text="Submit" runat="server" ID="btAddPost" OnClick="btAddPost_Click" ValidationGroup="AddUserPost" />
                   </div>
                   <div class="fileUpload btn btn-primary">
                       <div class="fileUpload btn btn-primary">
                           <span>
                               <img src="res/images/img.png" width="38" height="27" /></span>
                           <input type="file" runat="server" class="upload" id="FUFile" />
                       </div>
                   </div>
               </div>
           </ContentTemplate>
           <Triggers>
               <asp:AsyncPostBackTrigger ControlID="btAddPost" EventName="Click" />
           </Triggers>
       </asp:UpdatePanel>
   </fieldset>
   <script type="text/javascript">
       $('.textarea').focus(function () {
           $(this).animate({
               height: "80px"
           }, 500);
           $('.add-post-control').fadeIn(200);
       });
   </script>
</div>

方法:

protected void btAddPost_Click(object sender, EventArgs e)
{

    AddpostfromFront();
}
private void AddpostfromFront()
{
    if (FUFile.PostedFile.ContentLength != 0)
    {
        string tempVar = "~/res/Posts/" + FUFile.Value.ToString();
        FUFile.PostedFile.SaveAs(Server.MapPath(tempVar));
        ftier.Addpostfromfront(LoggedUserID, "4", txpost.Value, tempVar, DateTime.Now, DateTime.Now, false, false);
    }
}

我認為您需要執行的而不是檢查文件長度的方法是使用內置於PostedFile的方法來檢查是否有文件開頭。

如果您在Microsoft頁面上查找PostedFile您的代碼將更像這樣

Private void AddpostfromFront()  //I don't like your naming on this, should be AddPostFromFront
{
    if (FUFile.HasFile)
    {
        string tempVar = "~/res/Posts/" + FUFile.Value.ToString();
        FUFile.SaveAs(tempVar);
    }
}

要使用這些方法,您可能必須使用ASP控件而不是HTML標記<asp:FileUpload></asp:FileUpload>您必須調整屬性以適合您的情況和命名方案。 這將替換您的HTML標記<input type="file" runat="server" class="upload" id="FUFile" />

我認為您正在將兩個進程划分為一個,並且對於代碼應該做什么感到困惑。


不知道什么是ftier ,以及為什么它具有相同的方法名稱和相同的錯誤命名方案,或者它對這些信息正在做什么。


您應該分三步進行

  1. 上傳文件
  2. 保存文件
  3. 如果需要顯示文件,請使用已保存的文件(而不是正在上傳的文件)進行顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM