.NET各种小问题

一、session

用一般处理程序操作session时老是忘记实现接口,真受不了:

添加引用 System.Web.SessionState 命名空间

实现IRequiresSessionState接口

二,

asp.net中“字符文本中字符太多”错误及解决办法

比如说这个:

  <%# WebUI.Common.PublicFun.GetAlarmSubTypeNameByAlarmID(Eval("AlarmID"))%><%#Eval("AlarmID")%>

 当你嵌套太多的时候他会报“字符文本中字符太多”的错误

解决办法是用&quot;代替引号  =>>    objectid="<%# Eval(&quot;ObjectId&quot;) %>" 

三,

linq模糊查询

var querys=from u in f.Users where u.id.Contains(id) && u.name.Contains(name) select u;

  var q = from c in baseDic where c.ItemText.Contains(typeText) select c.ItemId;

很全的linq语法及实例

http://wenku.baidu.com/view/4c85bf02a6c30c2259019e9e.html

四,

.net 日期类型的变量,要取它的星期(取出来默认是英文的),需要这样子,比如说:item.DutyTime这个DateTime类型变量

string week= System.Globalization.CultureInfo.GetCultureInfo("zh-CN").DateTimeFormat.GetDayName(Convert.ToDateTime(item.DutyTime).DayOfWeek)

这样转出来的就是中文形式的星期几了

 五,

开发的时候,经常需要对文本框的输入字数进行限制,否则的话,会经常报错,普通的文本框可以用maxLength属性进行限制,

富文本框就不可以了,不生效的,这里可以这么做

                    <asp:TextBox ID="txtRemark" runat="server" CssClass="input" Width="100%" TextMode="MultiLine"
                        Rows="6" />
                        <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ErrorMessage="备注长度不能大于100字"
                        Text="备注长度不能大于100字" ControlToValidate="txtRemark" 
                        Display="dynamic" ValidationExpression="^[sS]{0,100}$"></asp:RegularExpressionValidator>

 ValidationExpression的100就对应了文本框的限制字数

六,

 //布尔型转成字符串型,首字母会变大写,不降序则不能赋值成功
ddlCanModity.SelectedValue = obj.CanModity.ToString().ToLower();

 七,

在服务器端用response.write输出js代码,后用response.redirect

            Response.Write("<script type='text/javascript'>alert('保存成功!');</script>");
            Response.Redirect("AcceptOfficeDocumentsList.aspx");

  这是注定要悲剧的!因为他会先运行完服务器端的代码,然后再去运行客户端,当遇到Response.Redirect("AcceptOfficeDocumentsList.aspx");

它直接就给你重定向到新的页面去了,客户端事件alert('保存成功!');永远不会被执行。

正确的做法应该是 

            Response.Write("<script type='text/javascript'>alert('保存成功!');</script>");
            Response.Write("<script type='text/javascript'>self.location.href='AcceptOfficeDocumentsList.aspx';</script>");

 这样它就会一起在客户端执行这代码了

 八,框架集刷新

使用框架集时,实现对数据进行删除,修改后,对应的页面进行刷新,这里有个例子:

 当我对DocumentTypeList页面的数据进行删除时,我希望DocumentTypeTree也能实时进行更新

<frameset border="0" framespacing="0" cols="180,*" frameborder="NO" rows="*">
    <frame src="DocumentTypeTree.aspx?menu_id=<%=Menu_id %>" name="DocumentTypeTreeFrame" frameborder="0" noresize="noresize"  id="DocumentTypeTreeFrame"/>
	<frame src="DocumentTypeList.aspx?menu_id=<%=Menu_id %>" name="DocumentTypeListFrame"/>
</frameset>

 要实现这个效果,其实很简单

当DocumentTypeList.aspx进行删除后,调用js在客户端对左边的DocumentTypeTree.aspx进行刷新即可,这是在编辑页面写的代码

MessageBox.ShowAndParentRedirect(this.Page, "保存成功!", Url);
string menu_id = Request.QueryString["menu_id"];
 //这里的parent即是frameset框架集,DocumentTypeTreeFrame对应子框架的name
Response.Write(string.Format(@"<script>parent.DocumentTypeTreeFrame.location.href=
'DocumentTypeTree.aspx?menu_id={0}'</script>", menu_id));

 这样就可以进行刷新了,妥妥的!

 九,页面缓存问题

利用window.print()打印页面的时候,被打印的页面很容易会被缓存(当请求的url不变时,请求的页面就是被缓存下来的页面),

解决办法:请求此页面的时候给他加个时间参数(比如这样:"&time="+new Date()),这样就可以请求页面时强制发起新的http请求

十,自定义Datatable

        // 自定义DataTable
        private DataTable MakeFileCheckListTable()
        {
            // Create a new DataTable titled 'Names.'
            DataTable FileCheckListTable = new DataTable("FileCheckList");

            DataColumn FileNoColumn = new DataColumn();
            FileNoColumn.DataType = System.Type.GetType("System.String");
            FileNoColumn.ColumnName = "FileNo";
            FileCheckListTable.Columns.Add(FileNoColumn);

            return FileCheckListTable;
        }
原文地址:https://www.cnblogs.com/xushining/p/3181778.html