使用DataSoure+Detailview控件完成部分自定义数据插入

不知道标题是否说明白了,举个例子,要发布一个留言,我拖一个DataSoure进来,配置好数据源以后再拖一个Detailview,把DefaultMode设置为Insert,但是我需要把留言时间的字段设置为当前时间而又不允许用户修改,还有用户Id也是这样,那么怎么做呢? 把Detailview中的相关字段的绑定去掉,然后打开CodeBehind文件,在DataSoure的Inserting事件中写入: SqlDataSource1.InsertParameters.Item(“MMDate”).DefaultValue = Date.Now …………………… 如此即可。当然在数据库中定义时间字段默认值也可以。比如:getdate()

自定义ASP.NET的角色管理

尽管当初安装VS2005的时候没有一同安装SQLExpress版的数据库,在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG下的machine.config文件中的<connectionStrings>依然为SQLExpress的连接字符串,所以,当我采用了SQL2005企业版的数据库来做角色管理的时候,连接出错。这时把这里的连接字符串改为目前连接的数据库连接字符串即可。 另外,在应用程序(网站)的根目录下的web.config文件中加入以下两部分内容(红色部分): <connectionStrings>    <add name=”MyConnectionString” connectionString=”Data Source=你的连接字符串;Integrated Security=True”      providerName=”System.Data.SqlClient” />    <add name=”SqlServices” connectionString=”你的连接字符串;Integrated Security=True” providerName=”System.Data.SqlClient” />  </connectionStrings> <roleManager enabled=”true” cacheRolesInCookie=”true” cookieName=”.ASPROLES”>        <providers>          <add connectionStringName=”SqlServices” applicationName=”MyApplication”               name=”SqlProvider” type=”System.Web.Security.SqlRoleProvider” />                  </providers>      </roleManager> 如此即可。 参考: 1。ASP.NET 2.0 中的新增服务、控件与功能概述 2。在ASP.NET 2.0中配置 AspNetSqlMembershipProvider(AspNetSqlProvider ) 2。在ASP.NET 2.0中配置 AspNetSqlMembershipProvider(AspNetSqlProvider )

DataGrid的自动编号问题

序号 内容 1 Taye 2 BOx 3 Glass 4 StarCraf 一、正序 A、AllowPaging=False情况下 <asp:DataGrid id=”DataGrid1″ runat=”server”><Columns><asp:TemplateColumn><ItemTemplate><%# Container.ItemIndex + 1%></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid> 就可以实现 不过更有趣的方法是使用这个方法 <asp:DataGrid id=”DataGrid1″ runat=”server”><Columns><asp:TemplateColumn><ItemTemplate><%# this.DataGrid1.Items.Count + 1%></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid> 也许有些人会觉得很奇怪为什么Items.Count会这样,而不是出来全部总合..但如果你了解绑定的过程时就容易理解.[从上面来看就是在ItemCreated事件中进行绑定所以得到的Items.Count刚好是当前的序号] B、AllowPaging=”True”下 如果你DataGrid支持分页则可以如下 <asp:DataGrid id=”DataGrid1″ runat=”server” AllowPaging=”True”><Columns><asp:TemplateColumn><ItemTemplate><%# this.DataGrid1.CurrentPageIndex * this.DataGrid1.PageSize + Container.ItemIndex + 1%></ItemTemplate></asp:TemplateColumn></Columns></asp:DataGrid> 二、倒序的方法 序号 内容 4 Taye 3 BOx 2 Glass 1 StarCraft 由上面可以知道使用this.DataGrid1.Items.Count – Container.ItemIndex +

续上篇

4.\App_GlobalResources Folder 资源文件(.resx) 是一个在你的应用程序中依据不同文化来改变页面内容的可以作为数据字典的字串表。除字串外,还可添加image等其它文件。例如添加两个资源文件到此文件夹:第一个资源文件是Resource.resx这是默认语言使用英语。  Name     Value  Answer     Hello there  PageTitle    Sample Page  Question    What is your name?第二个资源文件是Resource.zh-cn.resx)使用中文。  Name     Value  Answer     你好  PageTitle    示例页面  Question     你的名字叫什么? Listing 3-18: A simple ASP.NET page that uses resource filesVB <%@ Page Language=”VB” Culture=”Auto” UICulture=”Auto” %><!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”><script runat=”server”>Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, _ByVal e As System.EventArgs)Page.Title = Resources.Resource.PageTitleEnd SubProtected Sub Button1_Click()Sub Button1_Click(ByVal sender As Object, _ByVal e As System.EventArgs)Label1.Text = Resources.Resource.Answer & “ “ & Textbox1.TextEnd Sub</script><html xmlns=”http://www.w3.org/1999/xhtml” ><head id=”Head1” runat=”server”><title></title></head><body><form id=”Form1” runat=”server”><p><%= Resources.Resource.Question %></p><br /><asp:TextBox ID=”Textbox1” Runat=”server”></asp:TextBox><br /><asp:Button ID=”Button1” Runat=”server” Text=”Submit”OnClick=”Button1_Click” /><p><asp:Label ID=”Label1” Runat=”server”></asp:Label></p></form></body></html>c# <%@ Page Language=”C#” Culture=”Auto” UICulture=”Auto” %><!DOCTYPE html PUBLIC “–//W3C//DTD XHTML 1.1//EN”“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”><script runat=”server”>protected void Page_Load(object sender, System.EventArgs e){Page.Title = Resources.Resource.PageTitle;}protected void Button1_Click(object sender, System.EventArgs e){Label1.Text = Resources.Resource.Answer + “ “ + Textbox1.Text;}</script> 当这个程序运行时,会根据浏览器语言设定而选择使用不同的资源文件。如果语言设定为中文则会显示中文,否则为显示默认英文。 5.\App_LocalResources Folder你也可以把资源文件添加到\App_LocalResources文件夹,只不过\App_GlobalResources文件夹是应用程序级别,而\App_LocalResources文件夹是页面级别。 6.\App_WebReferences Folder你可以使用\App_WebReferences文件夹自动访在你的应用程序中引用的远程Web services。 7.\App_Browsers Folder存贮在 \App_Browsers文件夹中的.browser文件,你也可以在\Windows\Microsoft.NET\Framework\v2.0xxxxx\CONFIG\Browsers文件夹中看得到它,它主要是用来判断浏览器的兼容性的。 转自:http://www.cnblogs.com/zhhui/archive/2006/03/21/354545.html

Professional ASP.NET 2.0之应用程序文件夹-Application Folders

Professional ASP.NET 2.0之应用程序文件夹-Application Folders 1.\App_Code Folder  \App_Code文件夹是存贮classes,.wsdl文件和typed datasets的地方。你的解决方案中的所有页面可以自动访问存贮在这个文件夹的任何一个项目。如果这些项目是一个class (.vb or .cs),则Visual Studio 2005会自动检测并编译它;也会自动地创建源于.wsdl文件的XML Web service proxy class;或者一个源于.xsd文件的一个typed dataset。  下面看一个在你解决方案中使用\App_Code文件夹的简单class的例子:首先在\App_Code文件夹中建立一个Calculator.vb 或 Calculator.cs文件,如下所示: Listing 3-14: The Calculator classVB Imports Microsoft.VisualBasicPublic Class CalculatorClass CalculatorPublic Function Add()Function Add(ByVal a As Integer, ByVal b As Integer) As IntegerReturn (a + b)End FunctionEnd ClassC# using System;public class Calculator{public int Add(int a, int b){return (a + b);}}其次是对这个class的使用,看下面的一个简单的.aspx文件:Listing 3-15: An .aspx page that uses the Calculator classVB <%@ Page Language=”VB” %><!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”><script runat=”server”>Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)Dim myCalc As New CalculatorLabel1.Text = myCalc.Add(12, 12)End Sub</script>c# <%@ Page Language=”C#” %><!DOCTYPE html PUBLIC “–//W3C//DTD XHTML 1.1//EN”“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”><script runat=”server”>protected void Page_Load(object sender, System.EventArgs e){Calculator myCalc = new Calculator();Label1.Text = myCalc.Add(12, 12).ToString();}</script>那么如何在\App_Code文件夹使用两个不同语言的class呢?首先在\App_Code文件夹中添加两个子文件夹:一个 \VB 文件夹和一个 \CS 文件夹。\App_Code  \VB    Add.vb  \CS    Subtract.cs其次修改web.config文件如下:Listing 3-17: Structuring the web.config file so that classes in the \App_Code folder can use

asp.net中使用基于角色role的Forms验证

asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统web.config <system.web> <authentication mode=”Forms” >  <forms name=”.yaoCookies” loginUrl=”/duan/Manage/login.aspx” protection=”All”  timeout=”20″ path=”/” /> </authentication></system.web> 其中<authentication mode= “forms”> 表示本应用程序采用Forms验证方式。1). <forms>标签中的name表示指定要用于身份验证的 HTTP Cookie。默认情况下,name 的值是 .ASPXAUTH。采用此种方式验证用户后,以此用户的信息建立一个FormsAuthenticationTicket类型的身份验证票,再加密序列化为一个字符串,最后将这个字符串写到客户端的name指定名字的Cookie中.一旦这个Cookie写到客户端后,此用户再次访问这个web应用时会将连同Cookie一起发送到服务端,服务端将会知道此用户是已经验证过的. 2). <forms>标签中的loginUrl指定如果没有找到任何有效的身份验证 Cookie,为登录将请求重定向到的 URL。默认值为 default.aspx。loginUrl指定的页面就是用来验证用户身份的,一般此页面提供用户输入用户名和密码,用户提交后由程序来根据自己的需要来验证用户的合法性(大多情况是将用户输入信息同数据库中的用户表进行比较),如果验证用户有效,则生成同此用户对应的身份验证票,写到客户端的Cookie,最后将浏览器重定向到用户初试请求的页面.一般是用FormsAuthentication.RedirectFromLoginPage 方法来完成生成身份验证票,写回客户端,浏览器重定向等一系列的动作. public static void RedirectFromLoginPage( string userName, bool createPersistentCookie, string strCookiePath ); 其中:userName: 就是此用户的标示,用来标志此用户的唯一标示,不一定要映射到用户账户名称.createPersistentCookie: 标示是否发出持久的 Cookie。若不是持久Cookie,Cookie的有效期Expiration属性有当前时间加上web.config中timeout的时间,每次请求页面时,在验证身份过程中,会判断是否过了有效期的一半,要是的话更新一次cookie的有效期;若是持久cookie,Expiration属性无意义,这时身份验证票的有效期有cookie的Expires决定,RedirectFromLoginPage方法给Expires属性设定的是50年有效期。strCookiePath: 标示将生成的Cookie的写到客户端的路径,身份验证票中保存这个路径是在刷新身份验证票Cookie时使用(这也是生成Cookie的Path),若没有strCookiePath 参数,则使用web.config中 path属性的设置。 这里可以看到,此方法参数只有三个,而身份验证票的属性有七个,不足的四个参数是这么来的:IssueDate:Cookie发出时间由当前时间得出,Expiration:过期时间由当前时间和<forms>标签中的timeout参数算出。此参数对非持久性cookie有意义。UserData:这个属性可以用应用程序写入一些用户定义的数据,此方法没有用到这个属性,只是简单的将此属性置为空字符串,请注意此属性,在后面我们将要使用到这个属性。Version: 版本号由系统自动提供。 RedirectFromLoginPage方法生成生成身份验证票后,会调用FormsAuthentication.Encrypt 方法,将身份验证票加密为字符串,这个字符串将会是以.ASPXAUTH为名字的一个Cookie的值。这个Cookie的其它属性的生成:Domain,Path属性为确省值,Expires视createPersistentCookie参数而定,若是持久cookie,Expires设为50年以后过期;若是非持久cookie,Expires属性不设置。生成身份验证Cookie后,将此Cookie加入到Response.Cookies中,等待发送到客户端。最后RedirectFromLoginPage方法调用FormsAuthentication.GetRedirectUrl 方法获取到用户原先请求的页面,重定向到这个页面。 3). <forms>标签中的timeout和path,是提供了身份验证票写入到Cookie过期时间和默认路径。 以上就是基于Forms身份验证的过程,它完成了对用户身份的确认。 2.在受保护的文件夹如Manage下创建一web.config文件,内容如 <configuration>  <!–指定对整个Manage目录的访问权限–>  <system.web>     <authorization>           <!–多个角色用,分隔–>           <allow roles=”admin,user”/>           <deny users=”*” />       </authorization>  </system.web>  <!–也可控制某个页的权限   <location path=”AnnounceList.aspx”>     <system.web>        <authorization>           <allow roles=”admin”/>          

用户控件中引用图片时的路径设置——相对路径

我把一堆用户控件放在一个子目录中,但当这些控件放在页面上时,它们之内引用的图片却依然是相对于这个控件所在目录的路径出现,所以不得不加上~来从根目录往下找。

用CSS+div控制字符串显示长度

<DIV   STYLE=”width:200px;   height:50px;   border:0px   solid   red;  overflow:hidden;   text-overflow:ellipsis”><NOBR>测试   test   测试   test   测试   test   测试   test   测试</NOBR></DIV>

日程安排提前五分钟提醒

日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff(‘minute’,f开始时间,getdate())>5

ASP.NET视图状态验证MAC失败

 “/”应用程序中的服务器错误。 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。 源错误: 只有在调试模式下进行编译时,生成此未处理异常的源代码才会显示出来。若要启用此功能,请执行以下步骤之一,然后请求 URL: 1. 在产生错误的文件的顶部添加一条“Debug=true”指令。例如:   <%@ Page Language=”C#” Debug=”true” %> 或: 2. 将以下的节添加到应用程序的配置文件中: <configuration>   <system.web>       <compilation debug=”true”/>   </system.web></configuration> 请注意,第二个步骤将使给定应用程序中的所有文件在调试模式下进行编译;第一个步骤仅使该特定文件在调试模式下进行编译。 重要事项: 以调试模式运行应用程序一定会产生内存/性能系统开销。在部署到生产方案之前,应确保应用程序调试已禁用。 堆栈跟踪: [HttpException (0x80004005): 无法验证数据。] System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[] modifier, Int32 start, Int32 length, Int32& dataLength)