jquery+mvc專案問題小結

weixin_34219944發表於2011-03-15

引言:前幾天 我寫了一個小應用(學習jquery+asp.net mvc)
     同時 也給公司解決一些遠端登記工作日誌的問題
     (原來遠端也可以登記 但是速度慢  是winform客戶端通過webservices連線)

由於是第一次使用這2個知識點 遇到了一些問題 怕以後忘記了 記錄在這裡 也給同學一些幫助

1. Model 層   一般是一個類 在這個類裡面包括了呈現在頁面上的所有的內容 可以是實體物件 也可以是DataSet
             如果是單個值 可以不放在Model中 (放在ViewData["您的變數"])

   View和Model關係的建立 可以在建立View的時候 選擇 也可以建立好檢視以後 修改Model

2. View 的一般用法

     <input id="Project" readonly="readonly" onclick="popupDiv('pop-div','Project');"
                type="text" value="<%=ViewData["Project"] %>" />

3. 地址的寫法: 用到了mvc提供的url的help

    <script src='<%= Url.Content("~/Scripts/jquery-1.4.1.min.js")%>' type="text/javascript"></script>
  在js檔案裡面地址:
  首先在頁面上增加一個隱藏域:
  <input id="main" value='<%= Url.Content("~/main")%>' type="hidden" />  
  js檔案裡面        
   window.location.href = $("#main").val(); //"main";

4. ajax呼叫:
  
     var symbol = "&";
            var myPostData = "UserName=" + $("#UserName").val() + symbol;
            myPostData += "PassWord=" + $("#PassWord").val();
            //            alert(myPostData);
            $.ajax({
                type: "POST",

                url: $("#Authentication").val(), //"login/Authentication",
                data: myPostData,
                dataType: "json",
                success: function (data) {
                  
                    if (data.IsSuccess == false) {
                        alert(data.ErrorReason);
                    }
                    else {
                       
                        window.location.href = $("#main").val(); //"main";
                    }

                    //                    $("#PassWordCheck").append("<b>請求返回的資料為:</b> " + data.ID + "<br/>");

                }
            });

5. Linq

     var tempQuery = from myDetail in myWorkLogDetailList
                                    where myDetail.sGuid == sGuidDetail
                                    select myDetail;
                    List<CtWorkLogDetail> oneCtWorkLogDetail = (List<CtWorkLogDetail>)tempQuery.ToList();

   最後一定要加.ToList()

6. 返回值類的定義

   using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace xmgl
{
    public class ReturnMultiResult<T> where T : class
    {
        private Boolean isSuccess = false;
        /// <summary>
        /// 是否成功
        /// </summary>
        public Boolean IsSuccess
        {
            get { return isSuccess; }
            set { isSuccess = value; }
        }
        private string errorReason = string.Empty;
        /// <summary>
        /// 出錯原因
        /// </summary>
        public string ErrorReason
        {
            get { return errorReason; }
            set { errorReason = value; }
        }
        private string data = string.Empty;
        /// <summary>
        /// 資料
        /// </summary>
        public string Data
        {
            get { return data; }
            set { data = value; }
        }
        private List<T> result = new List<T>();
        /// <summary>
        /// 返回的集合資料
        /// </summary>
        public List<T> Result
        {
            get { return result; }
            set { result = value; }
        }
    }
     }

7. 表格的展現:
   2種方式: 資料量少的話 使用ascx控制元件 比較簡單
             資料量多的話 使用返回的Json字串 一個迴圈自己形成表格

      <div id="div_detailTable">
        <% Html.RenderPartial("index_Detail", Model); %>
      </div>

   其中ascx控制元件的Model 和 View 的 Model  是一致的

8. jquery選擇器

     //如何獲取Checkbox是否選中 返回值是true或者false
     $("#Overtime").attr("checked")
     //選擇一個表格所有的行
      $("#detailTable tr ")
     //選擇一個大物件再篩選
     $("#detailTable tr ").find(" .class ")

9. 物件作為一個層 移動位置

   <1> .pop-box
        {
 z-index: 9999; /*這個數值要足夠大,才能夠顯示在最上層*/
 margin-bottom: 3px;
 display: none;
 position: absolute;  //這句話至關重要
 background: #FFF;
 border: solid 1px #6e8bde;
 /*#FFF*/
         }


    var div_obj = $("#" + div_pop);
    var windowWidth = document.body.clientWidth;
    var windowHeight = document.body.clientHeight;
    var popupHeight = div_obj.height();
    var popupWidth = div_obj.width();


    div_obj.css({ "position": "absolute" }).css("left", $("#" + triggerButton).offset().left).
                       css('top', $("#" + triggerButton).offset().top + 30).css('opacity', 'show');
    div_obj.show();

10. View返回錯誤
    1. 返回json格式的錯誤資訊
    2. 作為view返回  return Content(ee.Message);
    3. 返回公共的出錯頁面


11. 部署的時候 一定要將mvc.dll 複製到bin下面
    在這個類庫上面選擇 複製本地 即可

相關文章