后台:有风起浪 admin
PowerDesigner 新建 选择Object-Oriented Model First diagram 选择 Use Case Diagram
使用sqlserver2008一定要安装sp1补丁
AjaxControlToolkit 控件包
分离数据库时提示正在使用 解决方法use master 再分离
Linq可以查询 数据库、数组、集合类、XML
添加新项:LINQ to SQL 类 生成.dbml文件 从服务器资源管理器中把表直接拖到.dbml文件中 点击其中的一个表 右键 添加 关联
*{padding:0; margin:0;}
float:left; 本身及其里面的内容都居左
photoshop中选择 复制 新建 可以知道选中图片的高宽,用拾色器可以知道特定的颜色。
指定某个超链接的样式:A.HelpLink{ }
background-position:center top;
background-position:0px -64px; //图片的左边 向上提64px
窗口大小改变而文字的相对位置保持不变:
<script type="text/javascript">
window.onresize = doReSize;
window.onload = doReSize;
function doReSize(){ //窗口大小改变而文字的相对位置保持不变:
document.getElementById("Theme").style.marginLeft = (document.body.clientWidth/110 * 2) + "%";
document.getElementById("SubTheme").style.marginLeft = (document.body.clientWidth/110 * 2) + "%";
init();
}
function init(){ //IE跟Firefox不兼容不
if(navigator.userAgent.indexOf("MSIE")>0){
}
if(navigator.userAgent.indexOf("Firefox")>0){
document.getElementById("HeadBody").style.height = "160px";
document.getElementById("NavSubList").style.marginLeft = "332px";
document.getElementById("left_list").style.paddingLeft = "0px";
}
}
</script>
设置行高line-height,文字默认在行内居中。
设置了flaot属性,其会自动占用一定的空间,需要设置margin属性。
letter-spacing:2.4pt; 字符间距
clear:both; vertical-align:middle;
div的height、float属性在火狐下不兼容
use DAL;
private static LangSinLinqDataContext db=new LangSinLinqDataContext();
var u=from user in db.Tab_Manager where user.Mname==username && user.Mpwd==upwd select user; //var是任何类 型的变量 不能用and要用&& user是表的别名
if(u.Count()<1)
数据库放在App_Data文件夹下打开页面报错,解决方法App_Data文件夹右键属性 高级 选择可以存档
IE跟火狐下居中:
<script type="text/javascript">
function init() {
document.getElementById("loginForm").style.left = screen.width / 2 - document.getElementById ("loginForm").clientWidth/2 - 10 + "px";
}
</script>
css中定义 #loginForm {position:absolute;}
两个RadioButton控件,要设置GroupName属性。
FCKeditor编辑器的使用:1.把文件夹htmlEdit放在项目WEB下 2.引用dll 3.web.cong文件中<appSettings><add key="FCKeditor:BasePath" value="~/WEB/htmlEdit/fckeditor/"/></appSettings>
静态方法中要调用方法外的变量,则此变量必须是静态的。
article.AHtmlFileName = article.ADate.Replace("-", "").Replace(":", "").Replace(" ", "");
Linq插入数据:
private static LangSinBlogLinqDataContext db = new LangSinBlogLinqDataContext();
public static void insertArticle(Article article) {
Tab_Article t = new Tab_Article();
t.Atitle = article.Atitle;
t.Aclass = 1;
t.Aauthor = "admin";
t.AContent = article.AContent;
t.Adate = Convert.ToDateTime(article.ADate);
t.AHtmlFileName = "";
t.AType = Convert.ToChar(article.AType);
db.Tab_Article.InsertOnSubmit(t);
db.SubmitChanges();
}
Linq查询数据:
public static IQueryable getArticleList() {
return from article in db.Tab_Article orderby article.id descending select article;
}
Linq查询一条数据:var article = db.Tab_Article.Single(t => t.id == Convert.ToInt32(id));
Linq更新一条数据:
public static void updateArticle(Article a) {
var article = db.Tab_Article.Single(t => t.id == Convert.ToInt32(a.Id));
article.Atitle = a.Atitle;
article.AContent = a.AContent;
db.SubmitChanges();
}
Linq更新一个字段的所有数据:
public string UpdateRole(int RoleID, string RoleName, string Description)
{
try
{
var obj = sysdb.SYS_ROLE.SingleOrDefault(x => x.RoleID == RoleID);
if (obj == null)
{
return "该角色已不存在,可能同时多个客户端在操作本项.";
}
obj.RoleName = RoleName;
obj.Description = Description;
sysdb.SubmitChanges();
}
catch (System.Exception ex)
{
return ex.Message;
}
return string.Empty;
}
Linq删除一条数据:
public static void deleteArticle(string id) {
var article = db.Tab_Article.Single(t => t.id == Convert.ToInt32(id));
db.Tab_Article.DeleteOnSubmit(article);
db.SubmitChanges();
}
Linq多表查询:
public static IQueryable getArticleListByClass(string _aclass) {
if (_aclass == null || _aclass == "")
{
var query = from t in db.Tab_Article
orderby t.id descending
from c in db.Tab_Article_Class
where t.Aclass == c.id
select new
{
id = t.id,
AIsOut = t.AIsOut,
Atitle = t.Atitle,
Adate = t.Adate,
Atype = t.AType,
Cname = c.Cname,
Acontent = t.AContent,
AHtmlFileName = t.AHtmlFileName
};
return query;
}
else {
var query = from t in db.Tab_Article
orderby t.id descending
from c in db.Tab_Article_Class
where t.Aclass == c.id
&&
t.Aclass == Convert.ToInt32(_aclass)
select new
{
id = t.id,
Atitle = t.Atitle,
AIsOut = t.AIsOut,
Adate = t.Adate,
Atype = t.AType,
Cname = c.Cname,
Acontent = t.AContent,
AHtmlFileName = t.AHtmlFileName
};
return query;
}
}
生成静态页面:1.准备模板页 2. .cs页面代码
生成静态页面的方法:
1.标签替换、
2.伪地址:为了SEO a.引用URLRewriter.dll 2.配置web.config
3.HttpHeader 生成静态:先进行地址映射,后生成静态页面。
IndexOf的用法:
int index = text.IndexOf("?");
if ((index != -1) || ((index + 1) < text.Length))
{
queryString = text.Substring(index + 1);
if (index > 0)
{
filePath = text.Substring(0, index);
}
}
HttpRuntime将Http请求转交给 HttpApplication,HttpApplication代表着程序员创建的Web应用程序。HttpApplication 创建针对此Http请求的 HttpContext对象,这些对象包含了关于此请求的诸多其他对象,主要是HttpRequest、 HttpResponse、HttpSessionState等。这些对象在程序中可以通过Page类或者Context类进行访问。
Response.Filter属性:在数据发送出去前通过绑定的Filter来修改HTTP实体数据
string rawUrl=Request.RawUrl; //测试的url地址是http://www.test.com/testweb/default.aspx?id=1, 结果如下:
结果为: /testweb/default.aspx?id=1
string Path=Request.PhysicalApplicationPath; //取得当前页面的物理路径
Server.MapPath("."); //页面所在目录的物理全路径
分页事件:
protected void ArticleGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.ArticleGridView.PageIndex = e.NewPageIndex;
this.ArticleGridView.DataSource = ArticleManager.getArticleList();
this.ArticleGridView.DataBind();
}
AJAX控件ModalPopupExtender的使用:
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ajaxToolkit" %>
<ajaxToolkit:ModalPopupExtender runat="server" ID="modalPop" TargetControlID="LinkButton1" PopupControlID="UpdatePanel2" CancelControlID="ArticelClassClose"></ajaxToolkit:ModalPopupExtender>
两个UpdatePanel控件
ListView控件:
<ItemTemplate>
</ItemTemplate>
<EmptyDataTemplate>
<span>未返回数据</span>
</EmptyDataTemplate>
<LayoutTemplate>
<div id="itemPlacehodlerContainer" runat="server" style="">
<span id="itemPlaceholder" runat="server"></span>
</div>
</LayoutTemplate>
.cs页面代码protected void Page_PreRender(object sender, EventArgs e) {
this.ListView1.DataSource = ArticleManager.getArticleListByClass(null);
this.ListView1.DataBind();
}
与ListView控件配套使用的分页控件DataPager:
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1" PageSize="4">
<Fields>
<asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="False"
ShowNextPageButton="False" ShowPreviousPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="False"
ShowNextPageButton="False" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>
//DropDownList控件在编辑时多加一句:
DropDownList1.Items.FindByValue(a.Aclass).Selected = true;
Jquery的HTML编辑器(xhEditor)插件配置:不需要提交刷新,所以去掉<form>标签
var uname = $("#uname").val();
//组成对象的JSON方式
var queryString = { uname: uname, ucontent:escape(ucontent) };
$("p:eq(0)") 表示众多<p>标签中的第一个
$.ajax({
type: "POST",
url: "resultPage.aspx",
data: createQueryString(),
dataType:"json",
success: function(msg) {
$("p:eq(0)").html(unescape(msg.ucontent));
}
});
aspx页面做异步提交:.cs页面用Response.Write返回值,则aspx页面要删除除第一行外的其它代码;
返回josn格式数据的写法:Response.Write("{\"uname\":\""+Request["uname"]+"\",\"ucontent\":\""+Request ["ucontent"]+"\"}");
escape()对输入的内容进行转码,unescape()对内容进行解码.
jsonBuilder.Append(@"{"""); 输出结果为{' 也可以写为jsonBuilder.Append("{\""); 好像也可以直接写为jsonBuilder.Append("{'");
去掉最后一个逗号:jsonBuilder.Remove(jsonBuilder.Length-1,1);
$.each(){}循环;
var row=$("#main").clone(); row.appndTo("#mainBox");将row追加到mainBox元素中;
row.attr("id","main"+n.id);加上属性
.remove()删除元素 .hide(1000)滑动删除元素
js中:"<span onclick=del('"+n.id+"')>删除</span>" 注意单双引号 输出的结果为<span onclick="del('9')">删除 </span>
aspx页面可以写成:<%=a.id%>
css中的写法:Div.tres span.current
<a href='javascript:getReList(1)'> 1 </a>
clsObjectShredder.cs把用linq返回的数据转换为DataTable时,须加此文件。
循环div时默认会换行,要都在一行显示则需设置属性:float:left;
HTML中单选按钮的name属性相同,id属性不同。
aspx页面中用HTML控件<input id="Radio1" type="radio" name="rad" checked="checked" value="cccc"/><input id="Button2" type="submit" value="button" />,.cs页面中用string id = Request.Form["rad"];接收值。
客户端清除缓存:
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Expires" content="0" />
服务端清除缓存:
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AddHeader("Pragma","No-Cache");
锚点(提交页面后回到指定的位置):
aspx页面<a name="section1"> </a>
.cs页面Response.Redirect("SkinMng.aspx#section1");
实例化一个派生类时,会先执行基类中的构造函数,然后执行自己的构造函数。
UpdatePanel控件可以实现局部无刷新,当UpdatePanel控件只针对某个button进行click事件注册,UpdatePanel 标签内部添加以下内容即可:
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
使用AJAX控件ModalPopupExtender:
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="ajaxToolkit" %>
<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<div id="updatePanelStyle" style="background-color:#eeeeee; width:450px; height:300px; border:1px solid #000000;">
<p style="text-align:center; font-size:14px;">文章分类管理</p>
<asp:GridView ID="ArticelClassGridView" runat="server"
AutoGenerateColumns="false" onrowediting="ArticelClassGridView_RowEditing"
OnRowUpdating="ArticelClassGridView_RowUpdating"
onrowcancelingedit="ArticelClassGridView_RowCancelingEdit"
DataKeyNames="id" onrowdeleting="ArticelClassGridView_RowDeleting">
<Columns>
<asp:BoundField DataField="id" HeaderText="编号" Visible="false" />
<asp:BoundField DataField="cName" HeaderText="分类名称" >
<ItemStyle Width="300px" />
</asp:BoundField>
<asp:CommandField ShowEditButton="true" />
<asp:CommandField ShowDeleteButton="true" />
</Columns>
</asp:GridView>
<br />
<asp:TextBox ID="ArticelClassBox" runat="server"></asp:TextBox>
<asp:Button ID="ArticleClassSubmit" runat="server" Text="添加"
onclick="ArticleClassSubmit_Click" />
<br />
<asp:Button ID="ArticelClassClose" runat="server" Text="关闭" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
<ajaxToolkit:ModalPopupExtender runat="server" ID="modalPop" TargetControlID="LinkButton1" PopupControlID="UpdatePanel2" CancelControlID="ArticelClassClose"></ajaxToolkit:ModalPopupExtender>