2016-03-23 4 views
0

У меня есть следующие настройки на странице в ASPX:JQuery AJAX и asp.net страницы

<asp:Content ID="contentBody" ContentPlaceHolderID="body" Runat="Server"> 
    <div class="Container-WithoutSideBar"> 
     <asp:Label ID="TextTitle" runat="server" AssociatedControlID="ArticleTitle" Text="Title " /> 
     <asp:TextBox ID="ArticleTitle" TextMode="SingleLine" runat="server"></asp:TextBox>  
... 
</asp:Content> 

и следующий JQuery AJAX:

function fnGetArticleHTML() 
{ 
    var articleText = JSON.stringify(tinyMCE.activeEditor.getContent()); 
    $.ajax({ 
     type: "POST", 
     url: 'adminpageadd.aspx/SubmitArticleHTML', 
     data: "{ 'ArticleHTML': " + articleText + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      alert("Article saved"); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      //alert("Error Saving Article");      
      alert(xhr.responseText); 
     } 
    });    
    return false; 
} 

Что все работает отлично.

И на стороне сервера код:

[System.Web.Services.WebMethod] 
public static string SubmitArticleHTML(string ArticleHTML) 
{   
    news_adminpageadd addArticle = new news_adminpageadd(); 

    return addArticle.SubmitArticle(ArticleHTML); 
} 

private string SubmitArticle(string ArticleHTML) 
{ 
    return ArticleTitle.Text; 
} 

Проблема заключается в том, что, когда я пытаюсь вернуть Article.Text, который является содержание asp:TextBox я получаю следующее исключение:

{"Message":"Object reference not set to an instance of an object.","StackTrace":" at news_adminpageadd.SubmitArticle(String ArticleHTML) in .....\news\\adminpageadd.aspx.cs:line 69\r\n at news_adminpageadd.SubmitArticleHTML(String ArticleHTML) in ....\news\\adminpageadd.aspx.cs:line 64","ExceptionType":"System.NullReferenceException"} 

Что по существу говорит о том, что:

ArticleTitle.Text; 

не установлен а не экземпляр объекта.

Я знаю, что это не тот случай, так как на Page_load он работает нормально.

Я предполагаю, что каким-то образом взаимодействие с WebMethod является проблемой, но как ее решить?

Установка текстового поля на клиентскую сторону и передача его через int AJAX не поможет мне, так как мне нужна серверная сторона для загрузки правильных значений.

Я попытался найти элемент управления, но это все равно дает то же исключение.

Любые идеи?

+0

Вы не можете получить доступ к веб-форм управления (то есть '<жерех: TextBox />') из веб-методов. Вы должны передать значения в свой веб-метод. – zgood

ответ

0

я передал переменную на стороне сервера, как это (я уверен, что могу привести в порядок его немного):

function fnGetArticleHTML() 
{ 
    var articleText = JSON.stringify(tinyMCE.activeEditor.getContent()); 
    var ArticleTitle = JSON.stringify($('#<%=ArticleTitle.ClientID%>').val()); 
    var ArticleAuthor = JSON.stringify($('#<%=AuthorName.ClientID%>').val()); 
    var ArticlePosition = JSON.stringify($('#<%=AuthorPosition.ClientID%>').val()); 
    var ArticlePhonNo = JSON.stringify($('#<%=AuthorPhone.ClientID%>').val()); 
    var ArticleEmail = JSON.stringify($('#<%=AuthorEmail.ClientID%>').val()); 
    var ArticleWebsite = JSON.stringify($('#<%=AuthorWebsite.ClientID%>').val()); 
    var ArticleCategory = JSON.stringify($('#<%=ArticleCategories.ClientID%>').attr('value')); 

    $.ajax({ 
     type: "POST", 
     url: 'adminpageadd.aspx/SubmitArticleHTML', 
     data: "{ 'ArticleHTML': " + articleText + ", 'ArticleTitle':" + ArticleTitle + ", 'ArticleAuthor':" + ArticleAuthor + ", 'ArticlePosition':" + ArticlePosition + ", 'ArticlePhonNo':" + ArticlePhonNo + ", 'ArticleEmail':" + ArticleEmail + ", 'ArticleWebsite':" + ArticleWebsite + ", 'ArticleCategory':" + ArticleCategory + "}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
      alert("Article saved: " + response.d); 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      alert("Error Saving Article");           
     } 
    });    
    return false; 
}