Asp中前台页面和后台代码之间的交互

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中前台页面和后台代码之间的交互
1.页面中获取后台page类中的全局变量
代码:
publicpartialclass RiverBasin : System.Web.UI.Page {publicstring HiddenFieldX = "99.87495";publicstring HiddenFieldY =
"24.799886";protectedvoid Page_Load(object sender, EventArgs e) {if (!Page.IsPostBack) { } } }
前台js或html:
var point = new BMap.Point( <%=HiddenFieldX%>, <%=HiddenFieldY%>);
page类在页面回传或首次请求时都会被实例化,那么全局变量会被重置,如果想在!ispostback 中修改了变量,并想在postback中恢复,那么只有先保存到hidden控件当中然后在postback 的时候恢复。

这种方法用于少量数据的传输,类似mvc中的viewbag。

2.页面中使用后台代码的方法
前台(使用#说明这个是在绑定控件当中):
<%# SetIsCheck(Eval("SAExamStuta"))%>
后台方法:
protected string SetIsCheck(object check) { if
(Convert.ToBoolean(check)) { return "<span
style='color:Red'>开启</span>"; } else
{ return "<span style='color:Black'>关闭
</span>"; } }
一般用于在绑定的时候,还需要根据不同数据进行不同的显示。

3.动态网站主要是对数据的显示,当需要对组的结构数据进行操作的时候,一般是通过bataBind
去绑定到控件上面,然后用Eval。

另外是将组或结构数据再aspx的源写,将数据放在数组当中,
然后边操作边显示。

在源中引入命名空间
<%@ Import Namespace="WaterSolution.WSObject"%><%@ Import
Namespace="WaterSolution.WSMethod"%>
在源中获取数据
<% PROC_RainFall_Contourline_Helper ST_RainFall_Contourline_Helper = new
PROC_RainFall_Contourline_Helper(); List<ST_RainFall_Contourline>
listData = ST_RainFall_Contourline_Helper.ObjectList(dtBeginDate, dtEndDate);
var datasource = from r in listData group r by
r.RainFall % 100 into g //将降雨量误差为100的分为一组selectnew { Key = g.Key,
Data = g };
%>
然后就可以在源中操作数据了
<script type="text/javascript">var map = new BMap.Map("container");var point
= new BMap.Point(99.87495, 24.799886);
map.centerAndZoom(point, 11); map.enableScrollWheelZoom(); map.enableContinuousZoom();<% foreach (var i in datasource)
{%>var points_<%=i.Key*10000%> = new Array();//点数组<% foreach (var n in
i.Data) {%>var point_<%=n.STCD%> = new BMap.Point(<%= n.LGTD %>,<%= n.LTTD %>);
points_<%=i.Key*10000%>.push(point_<%=n.STCD%>);//添加点<% } %>var
polyline_<%=i.Key*10000%> = new
BMap.Polyline(points_<%=i.Key*10000%>,{strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});
map.addOverlay(polyline_<%=i.Key*10000%>);<% } %></script>
关键就是在源和后台代码中灵活操作数据和调用方法,另外还可以看出webfrom的这种源文件(html)和代码的耦合性之高。

mvc虽然也用代码融合html,但是mvc舍弃了控件和视图状态,所以mvc的html不需要包含Htlper类等等的逻辑操作(比如在这个例子中的源中就包含了对list数组的分组操作),他的html中的代码仅仅是用来控制数据的显示。

4.在代码中控制html源中的控件样式,比较有趣的是可以控制所有有id的标签控件而不是仅仅控制服务器端控件
html:
<table class="adminRepeater" cellpadding="0" cellspacing="0" border="0"
align="center"id="bankTable" runat="server"><tr><td align="center">
----未找到数据----</td></tr></table>
代码:
if (tb.Rows.Count != 0) { bankTable.Style.Add("display", "none"); }else{ bankTable.Style.Add("display", "block"); }
例:
<% //测站坐标数据 PROC_StationXY_Helper StationXY_Helper = new
PROC_StationXY_Helper(); List<StationXY> listData =
StationXY_Helper.ObjectList("1<>0", "ST_STBPRP_B.STCD desc");%><script
type="text/javascript">//用于显示现有拥有坐标的测站到div上面
$(document).ready(function(){//显示测站数据<% foreach (var i in listData) {%> $("#content").append("<span id
='p_<%=i.STCD.ToString().Trim()%>'
style='position:absolute;top:<%=i.Y.ToString().Trim()%>px;
left:<%=i.X.ToString().Trim()%>px;font-
size:12px;'><%=i.STNM.ToString().Trim()%></span>");<% } %>//显示背景
$("#bg").addClass("bg"); }); </script>。

相关文档
最新文档