2016-06-10 54 views
0

我正在处理ASP.NET Web应用程序。我在哪里添加了ascx控制器,里面有一个asp:updatepanel。现在的问题是,当试着让它提供了以下错误的更新:MicrosoftAjax.js - PostBack POST 500(内部服务器错误)


MicrosoftAjax.js:5 POST http://localhost:49735/ 500 (Internal Server Error) 
    executeRequest  @ MicrosoftAjax.js:5 
    executeRequest  @ MicrosoftAjax.js:5 
    invoke    @ MicrosoftAjax.js:5 
    _onFormSubmit  @ MicrosoftAjaxWebForms.js:5 
    (anonymous function) @ MicrosoftAjax.js:5 
    b     @ MicrosoftAjax.js:5 


ascx文件看起来像这样:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchResults.ascx.cs" Inherits="CarParts24.Controls.Search.Results.SearchResults" %> 

<asp:UpdatePanel ID="UpdPnlSearchResults" runat="server"> 
<ContentTemplate> 
    <span id="search-result-json" class="hidden"> 
     <asp:HiddenField ID="hiddenSearchResults" runat="server" /> 
    </span> 

    <%--<asp:Panel ID="PanelResult" runat="server">--%> 

      <%-- Some ordinary HTML code --%> 

    <%--</asp:Panel>--%> 
</ContentTemplate> 
</asp:UpdatePanel> 


和代码隐藏:

using Newtonsoft.Json; 
using System; 
using System.Collections.Generic; 
using System.Data; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace CarParts24.Controls.Search.Results 
{ 
public partial class SearchResults : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     PanelResult.Visible = false; 
    } 

    public void ShowResults(DataTable datatable) 
    { 
     hiddenSearchResults.Value = JsonConvert.SerializeObject(datatable); 
     PanelResult.Visible = true; 
    } 
} 
} 

回答

0

我发现这个问题,它的<asp:HiddenField ID="hiddenSearchResults" runat="server" />是由于更新的时候做回发。将其更改为<asp:Literal ID="hiddenSearchResults" runat="server" />修复了问题