RSS 2.0 Feed
ASP.NET
摘要:阅读前,可以先参考 MediaElement 的一译文。实现该例子一定要安装 WPF/E和SDK。 1、新建一个WPF/E Javascript Application。 2、修改 plugin.xaml,增加 MediaElement 元素(红色粗体部分) <Canvas xmlns="http://schemas.microsoft.com/client/2007"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        Loaded="javascript:root_Loaded">  <Canvas x:Name="button">    <Rectangle Stroke="#FF8E8E8E" StrokeThickness="2" RadiusX="2" RadiusY="2" Height="23" Width="75">      <Rectangle.Fill>        <LinearGradientBrush StartPoint="0.5,2.109" EndPoint="0.5,-1.109">          <GradientStop x:Name="gradientStop1" Color="#FFFF9E00" Offset="1"/>          <GradientStop x:Name="gradientStop2" Color="#FFEAEAEA" Offset="0.218"/>        </LinearGradientBrush>      </Rectangle.Fill>    </Rectangle>    <TextBlock Canvas.Top="3" Canvas.Left="13" FontSize="12" Foreground="#FF5A5A5A" Text="Click Me" />  </Canvas> <Canvas x:Name="video">  <MediaElement  x:Name="mediaElement" Canvas.Top="0" Canvas.Left="0" Height="400" Width="400" /> </Canvas></Canvas> 3、增加一个新的.aspx页面,命名为WebForm1.aspx。把default.html里源html代码复制粘贴到WebForm1.aspx里(只保留第一行Page指令)。完成后WebForm1.aspx为: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WPFEJSApplication1.WebForm1" %> <html xmlns="http://www.w3.org/1999/xhtml" ><head>    <title>Untitled Page</title>    <script type="text/javascript" src="js/aghost.js"></script>    <script type="text/javascript" src="js/eventhandlers.js"></script></head><body>    <form>        <div id="wpfeControl1Host" >            <script type="text/javascript">             new agHost("wpfeControl1Host", // hostElementID (HTML element to put WPF/E control into)                        "wpfeControl1",     // ID of the WPF/E ActiveX control we create                        "400",              // Width                        "400",              //......[阅读全文]

posted @ | Feedback (3) | Filed Under [ ASP.NET 微软前沿产品 ]

摘要:很多人开始有这个疑问,GridView控件中的ImageField没有DataField属性,那么如何才能绑定到SQL Server中的Image Field?自从DynamicImage控件从beta2中消失后,这就成了个问题。但是,ASP.NET2.0随之也给我们带来了另外一种解决方案,那就是方便地利用HttpHandler(.ashx)动态显示数据库中的图片,这点在VS2005中提供了PersonalWebSite等模版中已经给出方案:通过ashx动态获取数据库中的某条图片数据,然后在GridView等控件的自定义模版中安置一个Image控件,并设置Image控件的ImageUrl属性为类似 XXX.ashx?photoId=1 即可显示图片。 下面为Handler.ashx的代码:<%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Data; using System.Data.SqlClient; using System.IO; using System.Web; using System.Configuration; public class Handler : IHttpHandler ...{ public bool IsReusable ...{ get ...{ return true; } } public void ProcessRequest(HttpContext context) ...{ // Set up the response settings context.Response.ContentType......[阅读全文]

posted @ | Feedback (27) | Filed Under [ ASP.NET VS2005(Whidbey) ]

摘要:       微软的Web平台开发组最近发布了一个新消息,据称在Visual Studio 2005 Beta2中,ASP.NET2.0中的一些特殊文件夹的名称将有所改变。        ASP.NET 2.0 (Beta2)中最新的特殊文件夹的名称改变如下: /Bin 改变为 /Application_Assemblies /Code 改变为 /Application_Code /Resources 改变为 /Application_Resources /WebReferences 改变为 /Application_WebReferences /Data 改变为 /Application_Data /Browsers 改变为 /Application_Browsers /Resources 改变为 /Application_GlobalResources /LocalResources 改变为 /Application_LocalResources /Themes 改变为 /Application_Themes        上面这些改变还没加入目前最新版本的Beta1 Refresh中,只有在未来的Beta 2中才被实现。     [来源:http://weblogs.asp.net/ksharkey/archive/2004/09/01/224333.aspx]...[阅读全文]

posted @ | Feedback (17) | Filed Under [ ASP.NET VS2005(Whidbey) ]

摘要: 新增的页面事件:在ASP.NET 2.0中,一个ASP.NET页面的生命周期主要为(红色字体表示ASP.NET 2.0新增加的阶段页面事件):客户端请求页面—》预初始化(OnPreInit)—》初始化(OnInit)—》完成初始化(OnInitComplete)—》载入ViewState(LoadViewState)—》处理回送数据(IPostBackDataHandler)—》Page_OnPreLoad—》Page_OnLoad—》回发更改通知(RaisePostDataChangedEvent)—》处理回发事件(RaisePostBackEvent)—》Page_OnLoadComplete—》预呈现(OnPreRender)—》完成预呈现(OnPreRenderComplete)—》保存ControlState(SaveControlState)—》保存ViewState(SaveViewState)—》呈现(Render)—》Page_UnLoad。 OnPreInit:在初始化页面OnInit事件前触发。在这个阶段里,可以进行定义站点主题(Theme)或加载站点个性化所需要的数据信息等操作。 OnInitComplete:完成初始化页面OnInit事件后触发。 OnPreLoad:在加载页面OnLoad事件前触发。 OnLoadComplete:完成页面加载OnLoad事件后触发。 OnPreRenderComplete:在完成预呈现OnPreRender事件后触发。这是完成页面呈现的最后一道关卡,在此之后,页面将无法再进行任何呈现上的改动。 SaveControlState:保存控件状态ControlState。ControlState是ASP.NET2.0控件新增的一个属性,类似ViewState作用,但它们区别在于ControlState用于保存更加重要的控件状态信息,以保证在禁用ViewState的情况下还可以对控件状态进行读写操作。 增加对页面Header的控制:System.Web.UI.Page类新增加了Header属性,用于对HTML页面头区域里数据的操作。通过对Header属性的跟踪,可以发现,Header属性保存着一个实现IPageHeader接口的对象(该对象有LinkedStyleSheets、Metadata、StyleSheet和Title四个属性),实际上正是通过这个对象实现对HTML页面头区域里数据的操作的。例如:<script runat="server">void Page_Load(object sender, System.EventArgs e){    this.Header.Metadata.Add("author", "brooks");}</script> 其运行结果为:<html><head> <title>Untitled Page</title>    <meta name="author" content="brooks" /></head> 定义表单中的默认按钮:在ASP.NET1.0中,我就为了设置表单中的默认按钮而一筹莫展。幸好ASP.NET2.0把这个功能补上了,现在可以非常方便的设置表单中的默认按钮了。<%@ page language="C#" %><script runat="server">void Button1_Click(object sender, System.EventArgs e){    this.LB_Message.Text = "You clicked button1";}</script><html><head runat="server">    <title>Untitled Page</title></head><body>    <form runat="server" defaultbutton="Button1">        <asp:textbox id="Textbox1" runat="server"></asp:textbox>        <asp:button id="Button1" runat="server" text="Button" onclick="Button1_Click" />        <asp:label id="LB_Message" runat="server"></asp:label>    </form></body></html> 设置焦点:现在假设为TextBox1控件设置焦点,在ASP.NET 2.0中可以这样实现:this.Textbox1.Focus();  或 this.SetFocus(this.Textbox1); 即可为TextBox1控件设置焦点。如果打算也为表单设置个默认焦点控件,让光标默认停留在TextBox1上:<form runat="server" defaultfocus="TextBox1"> 跨页面数据发送:如果你需要多个页面发送数据到同一个表单程序进行处理,或者数据在多个页面之间传输处理的话,你就可以使用ASP.NET 2.0这个新特性。例如,我打算把Default.aspx页里TextBox1里的文本数据发送到Default2.aspx页面进行处理:Default.aspx页:<%@ Page Language="C#" %><script runat="server">    void Button2_Click(object sender, EventArgs e)    {        Label1.Text = "Hi," + TextBox1.Text + ". This is Default.aspx";    }</script><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server">    <title>Untitled Page</title></head><body>    <form id="form1" runat="server">        <asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>        <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />        <asp:Button ID="Button2" Runat="server" Text="PostToSelf" OnClick="Button2_Click" />        <br......[阅读全文]

posted @ | Feedback (29) | Filed Under [ ASP.NET VS2005(Whidbey) ]

摘要:        西游记是个团队项目。一个团队的核心是人,这些志同道合者聚集一起并对目标达成共识(西天取经),利用自身力量的同时依靠外部资源克服困难(81难),最终胜利完成任务。很多公司企业常常对内部员工或外部媒体说企业文化,他们却常忽略企业文化应该起源于公司上中下各级人员的核心精神共识,兴盛于企业整体团队运营项目过程中,传承于新老员工并最终体现于大至企业整体小至职员个人思维行动上。在管理范围里,企业都在追求企业文化,却忘了领导层和员工是企业文化的主体,造成“我们的企业文化是XXX……”永远停留在口头上的尴尬局面。         VS2005Beta1出来也有阵子了,最近才有空偶尔拿出来看看玩玩。大部分想接触ASP.NET2.0的人,大概都跟我一样,第一个问题是:ASP.NET2.0比1.x多了些什么?建议看下这篇《What's new in ASP.NET Whidbey》。如果你是1.x开发人员,看完那文章后还得做好心理准备:变化之大远远不是一篇文章能写出来的。就拿ASP.NET内部来说,你看看《ASP.NET 2.0 Internals》就知道其代码模型、编译、页面生存周期等等都发生了变化。外观来看,Master Page、验证控件、GridView等等新的或改进后的WebControls。在安全、缓存、数据操作、国际化等等都有了让人兴奋的改进。         就拿国际化来看,利用资源文件的方式创建一个多国语言版本的World-Ready ASP.NET Web Application,甚至可以不用编写任何代码就可以实现。你没有看错,我也没有说得太离谱。在ASP.NET1.x里,要完成这个功能是比较费劲的。ASP.NET 2.0里,利用资源文件本地化一个WebApp有两种方式:Explicit Localization(显式本地化)和Implicit Localization(隐式本地化)。Explicit Localization针对Application-Level Resources(应用程序级的资源文件。这些手工创建的资源文件存放在根目录下的Resources子目录里,Resources目录类似Code目录为ASP.NET2.0里WebApp的特殊目录。),而Implicit Localization则对应Page-Level Resources(页面级的资源文件。这些资源文件存放在LocalResources特定目录里。) Explicit Localization的资源绑定格式:<%$ Resources:[filename prefix,]resource-key[,"designerdefault" %><%$ Resources:[filename prefix,]resource-key[,"designerdefault" %>例如: <asp:Button ID="Button1" Runat="server" Text="<%$ Resources: ClassName, ResoureKey, Default value %>">用代码读取资源: string ApplicationLevelResource = (string)GetAppResourceObject("ClassName", "ResourceKey"); 或者直接: string ApplicationLevelResource = Resources.ClassName.ResourceKey.ToString(); Impilicit Localization的资源绑定格式: 用代码读取: string PageLevelResource = (string)GetPageResourceObject("LabelResource1.Text");[提示]:打开一个.aspx页面,点Tools菜单上第一项Generate Local Resources,整个WebSite将自动增加LocalResources文件夹,并自动为每一个.aspx页面创建一个resx文件,对页面内部控件自动增加 meta:resourcekey 属性。         本地化具体操作步骤细节及具体编码,你可以参考: Localization in ASP.NET 2.0 and Visual Studio .NET 2005 : Code free Localization 上 下 Using Resources for Localization with ASP.NET......[阅读全文]

posted @ | Feedback (16) | Filed Under [ ASP.NET 个人评论和作品 VS2005(Whidbey) ]

摘要:    在 mike's web log 里看到一篇名为“How to Write a Bad Forum Post ”的随笔,我想对我们都很有参考价值。该文大致列举了在论坛发帖的15个坏毛病,其中第5条和第9条我是经常犯的,呵呵。而对于经常在CSDN等论坛上发问的同志们来说,个人觉得更是要看这文章不可。毕竟在提问前,先找找诸如MSDN的资源,搜索下论坛内的已有帖子,然后再google下,实在不行再发帖子问是一个很好的学习方法。当然,最后提问的技巧及解决问题途径也需要改进,经常在CSDN看到有的问题已经解决,然而问题的解决思路方法没有说出来,只是告诉大家“我已经搞定!”、“OK!想要答案发我Email”等等。发此感触,希望共勉。     在The Sells spout Blog那里,有个很有趣的争论:Avoid the GAC? That's a question。     一些资源:1、“Improving .NET Application Performance and Scalability: Releases”的一个最新版本(Beta3)已经发布让人下载,这些都是很值得品味的好文档。2、FxCop 1.30 提供下载。3、What's New in System.Xml for Visual Studio 2005 and the .NET Framework 2.0 Release...[阅读全文]

posted @ | Feedback (0) | Filed Under [ ASP.NET ]

摘要:    经常在网络上四处载东西,有时碰到直接拷贝一个类似http://193.100.100.56/TestWebSolution/WebApplication1/test.rar地址准备下载test.rar文件时,却被告知没有登录或者直接跳转到其他页面的情况,然后等登录后直接下载该文件。要实现上面情况,在.NET世界里是比较容易的。 1、  首先创建一个类库项目ClassLibrary1,实现如下(点这里查看): using System; using System.Web;    // 引用System.Web组件   namespace ClassLibrary1 {     public class MyHandler : IHttpHandler     {         public MyHandler()         {         }           #region IHttpHandler 成员         public void ProcessRequest(HttpContext context)         {             // 跳转到WebForm1.aspx,由WebForm1.aspx输出rar文件             HttpResponse response = context.Response;     response.Redirect("http://193.100.100.56/TestWebSolution/WebApplication1/WebForm1.aspx");         }           public bool IsReusable         {             get             {                 // TODO:  添加 MyHandler.IsReusable getter 实现                 return true;             }         }         #endregion     } }   2、  创建测试用的Web项目WebApplication1。在配置文件Web.config文件节点里增加如下节点:   <httpHandlers>                <add verb="*" path="*.rar" type="ClassLibrary1.MyHandler, ClassLibrary1" /> httpHandlers>   3、  在WebForm1.aspx里增加一个文本为“下载”的Button,其Click事件如下(点这里查看): FileInfo file = new System.IO.FileInfo(@"G:\WebCenter\TestWebSolution\WebApplication1\test.rar"); // FileInfo 类在 System.IO 命名空间里               Response.Clear();               Response.AddHeader("Content-Disposition", "filename=" + file.Name);               Response.AddHeader("Content-Length", file.Length.ToString());               string fileExtension = file.Extension;                 // 根据文件后缀指定文件的Mime类型               switch (fileExtension)               {                    case ".mp3":                        Response.ContentType = "audio/mpeg3";                       ......[阅读全文]

posted @ | Feedback (77) | Filed Under [ ASP.NET ]