java网站地后台代码 java怎么写网页后端( 四 )


以上是一些概念和基本约束,这些都是两种方式都应该满足的,下面具体介绍两种方式,来实现前台代码中(以下称为代码块)绑定后台变量的功能 。
一. %= str%
此种方式其实是ASP 时代就支持的,ASP 通过包含在% 和 %中的表达式将执行结果输出到客户浏览器 , 如: % =test %就是将变量test的值发送到客户浏览器中 。在ASP.NET中 , 这个表达式依然可以使用,并可以出现在前台代码的上述三个位置 , 但是要注意,除了上述的一般性约束外,对于控件属性,还必须是绑定到非服务器端控件的属性 。另外,它只能绑定上面讲的前三种变量类型,不支持绑定数据集合 。例子如下:
后台代码:
以下为引用的内容:
public partial class WebForm2 : System.Web.UI.Page
{
public string GetVariableStr;//注意变量的修饰符
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetVariableStr = "hello world from variable";
}
}
protected string GetFunctionStr()//注意返回值的修饰符
{
return "hello world from Function";
}
}
前台代码:
以下为引用的内容:
html xmlns=""
head
title/title
script type="text/javascript"
function fun() {
var str = '%= DateTime.Now %';
//前台位置1 , 绑定的是第三种变量类型(也是第二种方式,?因为Now是个属性)
alert(str);
}
/script
/head
body onload="fun()"
form id="form1" runat="server"
div
input type="text" value="https://www.04ip.com/post/%= GetVariableStr %" /
%--前台位置2 , 绑定的是成员变量--%
"%= GetFunctionStr() %"
%--前台位置3 , 绑定的是一个方法的返回值--%
/div
/form
/body
/html
一些错误的使用:
之所以说第一种绑定方式要用于非服务器端控件的属性,是因为如果应用于这些服务器端属性时,这些代码实际上不被解析 。比如:
以下为引用的内容:
asp:Label ID="Label1" runat="server" Text="%= GetVariableStr %"/asp:Label
asp:TextBox ID="TextBox1" runat="server" Text="%= GetVariableStr %"/asp:TextBox
则显示出来的Label1的文本是空,而TextBox中文本是"%= GetVariableStr %”,所以记住,对服务器端控件的属性加这样的代码块,将不被解析,而是将这一字符串直接作为属性值了,所以不是想要的结果 。如果引号也不加上,将会编译错误,提示“服务器标记不能包含 % ... % 构造 。” 。
这里结合开篇提到的关于将绑定代码快置于“Html显示内容的位置”时,如果在服务器端控件内,那四类控件如何显示的问题 。如下:
以下为引用的内容:
asp:Label ID="Label1" runat="server" "%= GetVariableStr %"/asp:Label
asp:TextBox ID="TextBox1" runat="server" "%= GetVariableStr %"/asp:TextBox
其中,Label1属于嵌套类控件,Label1确实显示了正确的结果,TextBox属于非嵌套类控件 , TextBox如果用这种方式,将会产生编译错误,提示“此上下文中不支持代码块 。”
二. %# str %
ASP.NET 引入了一种新的声明语法 %# % 。该语法是在 .aspx 页中使用数据绑定的基础,所有数据绑定表达式都必须包含在这些字符中 。这里从用法和适用范围等方面与第一种绑定方式进行区分 。
从出现的位置来看,除了能出现在第一种代码块出现的所有位置外,他还可以出现在服务器端控件的属性中 。
从绑定的变量类型上看 , 他还可以配合ASP.NET的数据绑定类控件,来绑定上述的第四种“变量”类型,就是数据集合(DropDownList,DataList,DataGrid,ListBox这些是数据绑定类控件,数据集合包括ArrayList(数组),Hashtable(哈稀表,DataView(数据视图),DataReader等) 。

推荐阅读