[英]Using Jquery and Ajax in ASP.NET
我正在使用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:Label放在我的aspx文件中
<%@ Page Language="C#" Inherits="Untitled.GetStuff" %>
<asp:Label id="label12" runat="server" text="helloworld2"/>
它也不起作用。 我怎样才能显示asp.net html控件?
你不能 您正在尝试将服务器端控件添加到客户端页面。 尝试返回以下内容:
Response.Write("<span id=\"label1\">helloworld</span>);
但是,当您回发页面时,您将无法说
string text = label1.Text; //DOES NOT WORK
您正在尝试将ASP.NET服务器控件编写为输出吗? 您实际上使事情复杂化= D
如果你写了
<span>HelloWorld</span>
而不是
<asp:Label Id="label1" runat="server" text="HelloWorld" />
您会得到想要的。 写入响应流时,无论如何都需要编写有效的HTML /文本。 仅当将ASP.NET标签的呈现函数作为ASP.NET生命周期的一部分调用时,它才会转换为<span>。
只需将GetStuff.aspx视为常规页面即可。 将您的HTML放在.aspx中,并将任何业务逻辑放在Page_Load中。 然后它将输出您的ajax调用可以使用的HTML。
更新:
您的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可以执行数据库查询或其他任何操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.