Использование Jquery и Ajax в ASP.NET - PullRequest
1 голос
/ 11 июня 2010

Я использую ajax и jquery для загрузки содержимого в div.

Мой jquery выглядит так

  $("a.trigger").click(function() {

   $.ajax({

    type: "POST",

    url: "GetStuff.aspx",

    data: "id=0",

    success: function(response){

     $("#contentDiv").html(response);

    }

   });

     });

В GetStuff.aspx я хотел бы написать некоторые элементы управления asp.net html, такие как

  private void Page_Load(object sender, System.EventArgs e)

  {

      Response.Expires = -1;

      Response.ContentType = "text/plain";

      Response.Write("<asp:Label id=\"label1\" runat=\"server\" text=\"helloworld\"/>");

      Response.End();

  }

Однако ярлык не появляется на странице.

Я пытался поместить метку asp: в мой файл aspx, как это

<%@ Page Language="C#" Inherits="Untitled.GetStuff" %>

<asp:Label id="label12" runat="server" text="helloworld2"/>

Это также не работает. Как я могу получить элементы управления asp.net html для отображения?

Ответы [ 3 ]

4 голосов
/ 11 июня 2010

Вы не можете. Вы пытаетесь добавить серверный элемент управления на страницу клиента. Попробуйте вернуть это вместо:

Response.Write("<span id=\"label1\">helloworld</span>);

Однако, когда вы отправляете страницу обратно, вы не сможете себе позволить сказать

string text = label1.Text; //DOES NOT WORK
1 голос
/ 11 июня 2010

Вы пытаетесь записать ASP.NET Server Control в качестве вывода? Вы на самом деле слишком усложняете вещи = D

Если вы выписали

<span>HelloWorld</span>

Вместо

<asp:Label Id="label1" runat="server" text="HelloWorld" />

Ты бы получил то, что хотел. Когда вы пишете в поток ответов, вам нужно написать корректный HTML / текст, что угодно. Метка ASP.NET превращается в только тогда, когда ее функция рендеринга вызывается как часть жизненного цикла ASP.NET.

0 голосов
/ 11 июня 2010

Просто обработайте GetStuff.aspx как обычную страницу. Поместите ваш HTML в .aspx, а любую бизнес-логику в Page_Load. Затем он выведет HTML, который может использовать ваш ajax-вызов.

Последнее обновление:

Ваша страница GetStuff.aspx будет выглядеть примерно так:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GetStuff.aspx.cs" Inherits="GetStuff" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:Label Id="label1" runat="server" text="Hello World" />
    <asp:Label Id="idToDisplay" runat="server" /> 
    </div>
    </form>
</body>
</html>

Тогда ваш код позади GetStuff.aspx.cs будет содержать:

protected void Page_Load(object sender, EventArgs e)
{
    var id = Request["id"].ToString();
    this.idToDisplay.Text = id;
}

Конечно, ваша Page_Load может выполнить запрос к базе данных или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...