Asp.Net中前台頁面和后台代碼之間的交互


1.頁面中獲取后台page類中的全局變量

   代碼:

public partial class RiverBasin : System.Web.UI.Page
    {
        public string HiddenFieldX = "99.87495";
        public string HiddenFieldY = "24.799886";
        protected void 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的分為一組
                      select new { 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>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM