引言:前幾天 我寫了一個小應用(學習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下面
在這個類庫上面選擇 複製本地 即可