jquery+mvc项目问题小结
引言:前几天 我写了一个小应用(学习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下面
在这个类库上面选择 复制本地 即可