当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

DotNet前台代码绑定后台变量各种方法

减小字体 增大字体 作者:网络     来源:asp编程网  发布时间:2018-12-30 7:42:59

上引号,作为字符串获取,然后根据实际需求,用相应函数进行转换,得到所需要的类型。

另外,这里所说的后台变量是泛指的,包括如下:

成员变量

方法或属性的返回值 

表达式,也就是所有后台能够执行的代码,运行后所得到的值(也就是直接将后台代码写在前台代码中,记得使用完全限定名或在后台中using相关namespace)
数据集合

后台变量有一些约束条件,需要满足:

(1)变量修饰符要求。变量是静态或者实例字段均可。对于代码隐藏模式的ASP.NET,以上的所述的变量必须为public或protected类型(因为是基类与派生类的关系),private或者internal都不行,而代码嵌入模式则任何修饰符的变量均可访问(一个类内部的关系)。

(2)变量类型要求。由于前台属性一般是字符串类型,而JavaScript基本类型也就是字符串型、数字型、布尔型,因此对应的变量应该也是这几种方式,其余类型如果不被支持(如复杂类型、数组、引用类型等),前台获取的就是调用了变量的ToString()方法所得到的字符串。因此,在绑定时,要根据情况看是否能进行隐式类型转换,必要时还要用相关函数来强制转换,以保证前台可以获得正确的值。当然,对于数据绑定类控件,它的有些属性可以为数据集合,但这时的绑定只能通过下面第二种方式才被支持。

以上是一些概念和基本约束,这些都是两种方式都应该满足的,下面具体介绍两种方式,来实现前台代码中(以下称为代码块)绑定后台变量的功能。

一. <
%= 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="http://www.w3.org/1999/xhtml">

<
head>

 
 
 
<
title>
<
/title>

 
 
 
<
script type="text/javascript">

 
 
 
 
 
 
 
function fun()
{

 
 
 
 
 
 
 
 
 
 
 
var str = '<
%= DateTime.Now %>
'

 
 
 
 
 
 
 
 
 
 
 
//前台位置1,绑定的是第三种变量类型(也是第二种方式,?因为Now是个属性)
 
 
 
 
 
 
 
 
 
 
 
alert(str)

 
 
 
 
 
 
 
}
 
 
 
<
/script>

<
/head>

<
body >

 
 
 
<
form id="form1" runat="server">
 
 

 
 
 
 
 
 
 
<
div>

 
 
 
 
 
 
 
 
 
 
 
 
<
input type="text" value="<
%= 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属于嵌套类控件,Lab

上一页  [1] [2] [3] [4]  下一页


DotNet前台代码绑定后台变量各种方法