Как включить текст внутри div, используя HttpContext?
Я включил div на мою веб-страницу, используя HtmlGenericControl. Нажав кнопку, я хочу добавить текст в div с помощью HttpContext. Я не хочу использовать InnerHtml, потому что браузер зависает, когда текст, который я хочу включить, очень длинный. Я попробовал следующий способ, но он печатает текст за пределами div. Пожалуйста помоги. Спасибо!
public partial class TextViewer : System.Web.UI.Page
{
public HttpContext ctx;
protected void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl myDiv = new HtmlGenericControl("div");
myDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Blue");
this.Controls.Add(myDiv);
ctx = this.Context;
}
protected void Button1_Click(object sender, EventArgs e)
{
ctx.Response.Write("supposed to be printed inside myDiv.");
}
}
2 ответа
Решение
Вы можете написать в HttpContext
из кода и получить доступ к его значению из jQuery.
Код позади:
protected void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl myDiv = new HtmlGenericControl("div");
myDiv.ID = "myDiv";
myDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Blue");
this.Controls.Add(myDiv);
}
protected void Button1_Click(object sender, EventArgs e)
{
HttpContext.Current.Application["MyData"] = "Supposed to be printed inside myDiv.";
}
.aspx:
<head runat="server">
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
var data = '<%= HttpContext.Current.Application["MyData"] != null ? HttpContext.Current.Application["MyData"].ToString() : "" %>';
$("#myDiv").append(data);
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</form>
</body>
В таком случае вы можете разбить ваш текст на несколько промежутков и установить текст каждого отрезка отдельно
foreach(var paragraph in myText)
{
var span = new HtmlGenericControl("span");
span.InnerHtml = paragraph;
myDiv.Controls.Add(span);
}