Передача параметра в пользовательский элемент управления, динамически создаваемый дублирующимися значениями Ajax
У меня проблема с пользовательским контролем и параметрами, которые я отправляю через веб-форму с помощью Ajax. Я использую пользовательский элемент управления, который содержит только метку.
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Message.ascx.cs" Inherits="Message" %>
<asp:Label ID="lblMessage" runat="server" Text="lblMessage"></asp:Label>
И веб-форма, которая содержит этот пользовательский элемент управления. Я динамически создаю пользовательский элемент управления в веб-форме (код позади):
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();
}
}
}
}
и передачу параметра из веб-формы в пользовательский элемент управления следующим образом:
<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);