2013-08-25 42 views
0

我有一個關於用戶控件和通過使用Ajax的Web表單發送的參數的問題。 我正在使用僅包含標籤的用戶控件。在通過Ajax重複值動態創建的用戶控件中傳遞參數

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Message.ascx.cs" Inherits="Message" %> 
<asp:Label ID="lblMessage" runat="server" Text="lblMessage"></asp:Label> 

和一個包含此用戶控件的Web窗體。 我創建動態的web表單的用戶控制(後面的代碼):

public partial class _Default : System.Web.UI.Page 
{ 
    [WebMethod] 
    public static string LoadUserControl(string message) 
    { 
     using (Page page = new Page()) 
     { 
      UserControl userControl = (UserControl)page.LoadControl("Message.ascx"); 
      (userControl.FindControl("lblMessage") as Label).Text = message; 
      page.Controls.Add(userControl); 
      using (StringWriter writer = new StringWriter()) 
      { 
       page.Controls.Add(userControl); 
       HttpContext.Current.Server.Execute(page, writer, false); 
       return writer.ToString(); 
      } 
     } 
    } 
} 

和從web形式傳遞參數給用戶控制是這樣的:

<script type = "text/javascript"> 

     $(document).ready(function(){ 

      $("#demo").click(function() { 
       $.ajax({ 
        type: "POST", 
        url: "CS.aspx/LoadUserControl", 
        data: "{message: '" + $("#message").val() + "'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (r) { 
         $("#Content").append(r.d); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <input type = "text" id = "message" /> 
    <input type = "button" id = "demo" value = "Load" /> 
    <div id = "Content"> 

    </div> 
    </form> 
</body> 
</html> 

的問題是當我點擊幾次按鈕時,「內容」中的值被重複幾次而不是一次,並用我分配給文本框的新值重新填充。 有人知道爲什麼嗎? 我想要的是,每當我點擊按鈕時,用戶控件都會收到該值並僅填充一次信息,而不是多次。

回答

1

更換

$("#Content").append(r.d); 

寬度

$("#Content").html(r.d); 
+1

喜邁克爾,感謝這麼多。這解決了這個問題。 –