62,046
社区成员
发帖
与我相关
我的任务
分享
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestRoute.aspx.cs" Inherits="TestRoute" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
城市=<asp:Label ID="Label1" runat="server" Text="Label" onclick="abc(cname);"></asp:Label>
<script type="text/javascript">
var cname = '<%= cname %>';
function abc(n) {
window.alert(n);
}
</script>
</body>
</html>
using System;
public partial class TestRoute : System.Web.UI.Page
{
protected string cname;
protected void Page_Load(object sender, EventArgs e)
{
cname = (string)RouteData.Values["cname"];
this.Label1.Text = cname;
}
}
你可以看到这里接受一个参数 cname,然后把它一两种方式显示。一种是文本方式显示在页面上,另一种是将其文本值输出成了 javascipt 全局变量赋值代码的一部分。
然后在 global.asax 中设置路由:<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>
<script RunAt="server">
void Application_BeginRequest(object sender, EventArgs e)
{
}
void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapPageRoute("我随便创建的 哈哈", "City/{*cname}", "~/TestRoute.aspx");
RouteTable.Routes.MapPageRoute("我随便创建的2 哈哈", "{*cname}", "~/TestRoute.aspx");
}
</script>
接下来,你从浏览器上测试“/city/昆明"或者干脆直接访问"/厦门",你会看到页面显示了城市名,而且用鼠标点击城市名会执行 javascript 代码,其给出的 cname 值就是你从 asp.net 对象中赋值给前端的。
你可以统一地设置值。例如你可以这样写<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestRoute.aspx.cs" Inherits="TestRoute" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
城市=<asp:Label ID="Label1" runat="server" Text="Label" onclick="abc(cname);"></asp:Label>
<script type="text/javascript">
var cname = '<%= cname %>';
var def= <%= defaultObject %>;
function abc(n) {
window.alert(n);
}
</script>
</body>
</html>
using System;
public partial class TestRoute : System.Web.UI.Page
{
protected string cname;
protected string defaultObject;
protected void Page_Load(object sender, EventArgs e)
{
cname = (string)RouteData.Values["cname"];
this.Label1.Text = cname;
var x = new
{
_t = "随便创建一个对象测试啦",
date = DateTime.Now.ToString(),
a = 12345
};
var s = new System.Web.Script.Serialization.JavaScriptSerializer();
defaultObject = s.Serialize(x);
}
}
这里把后台的随便一个复杂的对象,序列化为 json 格式,然后粘贴到输出的 jaavscript 代码中。你可以打开浏览器端页面源代码看看,前端有一个叫做 def 的全局变量,可以随时在 js 中通过 def._t、def.a、def.date 这种形式来访问 jaavscript 对象。
只要你懂 javascript !
<input type="hidden" id="hidDate" runat="server" />
后台
hidDate.value = "3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8";
JS
var _data = $('#hidDate').val();
或者
用$.ajax() 具体看网上接口