2016-05-07 5 views
1

私はajaxのポストメソッドを使っていくつかの価値を得て、[WebMethod]静的メソッドのコードを送信するアプリケーションを持っています。しかし、私はページのテキストボックスに値を割り当てることはできません。ここに私のコードは次のとおりです。asp.netの静的メソッドからテキストボックスに値を設定する方法は?

[WebMethod] 
    public static string copyData(string name, string msg, string sing_cal1, string timepick, string timepickst, string sing_cal4, string step) 
    { 
     if (step == "3") 
     { 
      if (HttpContext.Current != null) 
      { 
       Page page = (Page)HttpContext.Current.Handler; 
       TextBox txtCampaignNameEditC = (TextBox)page.FindControl("txtCampaignNameEdit"); 
       TextBox txtMsgEditC = (TextBox)page.FindControl("txtMsgEdit"); 
       TextBox txtSentFromC = (TextBox)page.FindControl("txtSentFrom"); 
       Label lblScheduledTimeC = (Label)page.FindControl("lblScheduledTime"); 


       txtCampaignNameEditC.Text = name; // Here I am getting error as "Object reference not set to an instance of an object." 
      } 

     } 

     return ""; 
    } 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#wizard').smartWizard({ onLeaveStep: leaveAStepCallback, onFinish: onFinishCallback }); 
     function leaveAStepCallback(obj) { 
      var step_num= obj.attr('rel'); 
      var name = $("#<%= txtCampaignName.ClientID %>").val(); 
      var msg = $("#<%= txtMessage.ClientID %>").val(); 
      var cal1 = $("#<%= single_cal1.ClientID %>").val(); 
      var timepicks = $("#<%= txtTimePick.ClientID %>").val(); 
      var pickst = $("#<%= txtTimePickST.ClientID %>").val(); 
      var cal4 = $("#<%= single_cal4.ClientID %>").val(); 
      $.ajax({ 
       type: "POST", 
       url: "CreateCampaign.aspx/copyData", 
       data: '{name: "' + name + '", msg: "' + msg + '", sing_cal1: "' + cal1 + '", timepick: "' + timepicks + '", timepickst: "' + pickst + '", sing_cal4: "' + cal4 + '", step: "'+ step_num +'"}', 


       contentType: "application/json; charset=utf-8", 
       dataType: "json" 
      }); 
      return true; 
    } 

方法の背後にあるこのコードは、私がテキストボックスに受信したパラメータを割り当てることができません。これで私を助けてください。ありがとう。

答えて

2

コントロールを変更するコードビハインドにアクセスできるのは、ページのライフサイクル中だけです。ページがレンダリングされると、そのページはサーバーに接続されなくなります。

コントロールがないため、WebMethodから別の機能にコントロールを参照する移動コードは機能しません。 Webメソッドからデータを返し、JavaScriptを使用してDOMにデータを配置する必要があります。

[WebMethod]がASP.Netページライフサイクルを実行しないため、[WebMethod]を使用してテキストボックスに値を割り当てることはできません。 JavaScriptを使用してテキストボックスに値を割り当てる必要があります。あなたがチェックすることができますJavaScriptでテキストボックスの値を取得および設定する方法についてのチュートリアルについては

thisthis

+0

説明のためにありがとう。しかし、あなたが例を挙げることができれば素晴らしいことでしょう。 – barsan

0

StaticにテキストボックスのClientIDModeプロパティを設定します。これにより、テキストボックスに設定したIDはすべてクライアントのidになります。そうすれば、idは予測可能になり、JavaScriptから参照することができます。

その後、クライアントコードでajaxを実行した後、JavaScriptの値を更新できます。

document.getElementById("yourControlId").value = "whatever"; 
関連する問題