当前位置: 首页 > news >正文

当地自己的淘宝网站怎么做重庆手机网站方案设计

当地自己的淘宝网站怎么做,重庆手机网站方案设计,流程图制作网站,学校网站建设的风险分析User Control大家肯定不会陌生#xff0c;在使用ASP.NET的过程中#xff0c;除了aspx页面#xff0c;最常见的就莫过于ascx了。ascx是一个有独立逻辑的组件#xff0c;提供了强大的复用特性#xff0c;合理使用#xff0c;能够大大提高开发效率。通过User Control直接生成… User Control大家肯定不会陌生在使用ASP.NET的过程中除了aspx页面最常见的就莫过于ascx了。ascx是一个有独立逻辑的组件提供了强大的复用特性合理使用能够大大提高开发效率。通过User Control直接生成HTML内容其实已经是一个比较常用的技巧了尤其在AJAX时代不过网络上这方面的内容比较少很多人还是在苦苦地拼接字符串因此在这里我通过一个实例简单介绍一下这个技巧。 对一个对象文章图片音乐etc.进行评论是应用中最常见的功能之一。首先我们定义一个Comment类以及其中会用到的“获取”方法 publicpartial class Comment{public DateTime CreateTime { get; set; }public string Content { get; set; }}publicpartial class Comment{private static ListComment s_comments  new ListComment{new Comment{CreateTime  DateTime.Parse(2007-1-1),Content  今天天气不错},new Comment{CreateTime  DateTime.Parse(2007-1-2),Content  挺风和日丽的},new Comment{CreateTime  DateTime.Parse(2007-1-3),Content  我们下午没有课},new Comment{CreateTime  DateTime.Parse(2007-1-1),Content  这的确挺爽的}};public static ListComment GetComments(int pageSize, int pageIndex, out int totalCount){totalCount s_comments.Count;ListComment comments  new ListComment(pageSize);for (int i pageSize * (pageIndex - 1);i pageSize * pageIndex i s_comments.Count; i){comments.Add(s_comments[i]);}return comments;}} 为了显示一个评论列表我们可以使用一个用户控件ItemComments.aspx来封装。自然分页也是必不可少的 asp:Repeaterrunatserver IDrptCommentsItemTemplate时间%#(Container.DataItem as Comment).CreateTime.ToString() %br /内容%#(Container.DataItem as Comment).Content %      /ItemTemplateSeparatorTemplatehr //SeparatorTemplateFooterTemplate        hr /    /FooterTemplate/asp:Repeater %if (this.PageIndex 1){ %a href/ViewItem.aspx?page% this.PageIndex - 1 % title上一页上一页/anbsp;%} %%if (this.PageIndex * this.PageSize  this.TotalCount){ %a href/ViewItem.aspx?page% this.PageIndex 1 % title上一页下一页/a%} % publicpartial class ItemComments : System.Web.UI.UserControl{protected override void OnPreRender(EventArgs e){base.OnPreRender(e);this.rptComments.DataSource  Comment.GetComments(this.PageSize,this.PageIndex, out this.m_totalCount);        this.DataBind();}public int PageIndex { get; set; }public int PageSize { get; set; }private int m_totalCount;public int TotalCount{get{return this.m_totalCount;}}} 然后再页面ViewItem.aspx中使用这个组件 div idcommentsdemo:ItemCommentsIDitemComments runatserver //div publicpartial class ViewItem : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){this.itemComments.PageIndex  this.PageIndex;}protected int PageIndex{get{int result 0;Int32.TryParse(this.Request.QueryString[page], out result);return result 0 ? result : 1;}}} 打开ViewItem.aspx之后效果如下 时间2007/1/1 0:00:00 内容今天天气不错 时间2007/1/2 0:00:00 内容挺风和日丽的 时间2007/1/3 0:00:00 内容我们下午没有课 下一页 这张页面的功能非常简单那就是察看评论。当前评论的页码会使用QueryString的page项进行指定然后在ViewItem.aspx里获取到并且设置ItemComments.ascx控件的属性。ItemComments控件会根据自身属性来获取数据进行绑定至于显示内容全都定义在ascx中了。由于需要分页功能这个评论控件中还包含了上一页和下一页的链接他们链接的目标很简单就是ViewItem.aspx页并且加上页码的Query String而已。 功能是完成了不过用着用着忽然觉得不妥为什么呢因为我们在翻页或者用户发布评论的时候整张页面都刷新了。这可不好要知道可能ViewItem页中还有其他几个显示部分它们可是不变的。而且如果其他几个部分也需要分页那么可能就需要保留页面上每一部分的当前页码这样开发的复杂性还是比较高的。 那么我们不如用AJAX吧。无论是用户察看评论时进行翻页还是发表评论都不会对页面上的其他内容造成影响。要开发这个功能自然需要服务器端的支持那么该怎么做呢一般我们总是有两种选择 服务器端返回JSON数据在客户端操作DOM进行呈现。服务器端直接返回HTML内容然后在客户端设置容器例如上面id为comments的div。不过无论采用哪种做法“呈现”的逻辑一般总是另写一遍第一次的呈现逻辑写在了ItemComments.ascx中。如果使用第1种做法那么呈现逻辑就需要在客户端通过操作DOM进行呈现如果使用第2种做法那么就要在服务器端进行字符串拼接。无论哪种做法都违背了DRY原则当ItemComments.ascx里的呈现方式修改时另一处也要跟着修改。而且无论是操作DOM元素还是拼接字符串维护起来都比较麻烦开发效率自然也就不高了。 如果我们能够直接从ItemComments控件获得HTML内容该多好啊——那么我们就这么做吧。请看如下代码GetComments.ashx publicclass GetComments : IHttpHandler{public void ProcessRequest(HttpContext context){context.Response.ContentType  text/plain;ViewManagerItemComments viewManager  new ViewManagerItemComments();ItemComments control viewManager.LoadViewControl(~/ItemComments.ascx);control.PageIndex  Int32.Parse(context.Request.QueryString[page]);control.PageSize 3;context.Response.Write(viewManager.RenderView(control));}public bool IsReusable { ... }} 很简单的代码不是吗创建对象设置属性然后通过Response.Write输出而已。实在没什么大不了的——不过关键就在于ViewManager类我们来看一下它是怎么实现的 publicclass ViewManagerT where T : UserControl{private Page m_pageHolder;public T LoadViewControl(string path){this.m_pageHolder  new Page();return (T)this.m_pageHolder.LoadControl(path);}public string RenderView(T control){StringWriter output  new StringWriter();this.m_pageHolder.Controls.Add(control);HttpContext.Current.Server.Execute(this.m_pageHolder, output, false);return output.ToString();}} ViewManager中只有两个方法LoadViewControl和RenderView。LoadViewControl方法的作用是创建一个Control实例并返回RenderView方法的作用则就是生成HTML了。这个实现方式的技巧在于使用了一个新建的Page对象作为生成控件的“容器”而最后其实我们是将Page对象的整个生命周期运行一遍并且将结果输出。由于这个空的Page对象不会产生任何其他代码因此我们得到的就是用户控件生成的代码了。 不过要实现这个AJAX效果还需要做两件事情。 第一就是简单修改一下ItemComments控件中的翻页链接让它被点击时调用一个JavaScript函数。例如“上一页”的代码就会变成 ahref/ViewItem.aspx?page% this.PageIndex - 1 % title上一页onclickreturn getComments(% this.PageIndex - 1 %);上一页/a 第二就是实现getComments这个客户端方法。在这里我使用了prototype框架好处就是能够用相当简洁的代码来做到替换HTML的AJAX效果 scripttypetext/javascript languagejavascriptfunction getComments(pageIndex){new Ajax.Updater(comments,/GetComments.ashx?page  pageIndex  t  new Date(),{ method: get }); return false; // IE only}/script 大功告成。 其实就像之前所说的那样使用UserControl进行HTML代码生成是一个十分常用的技巧。尤其在AJAX应用越来越普及的情况下合理使用上面提到的方式可以方便的为我们的应用添加AJAX效果。而且很多情况下我们即使不需要在页面上显示内容也可以将内容使用UserControl进行编辑。因为编写UserControl比拼接字符串的方式无论是在开发效率上还是可维护性上都高出许多。由于这个方式其实使用了WebForms这个久经考验的模型因此在执行效率方面也是相当高的。此外就刚才的例子来说使用UserCotrol进行HTML生成还有其他好处 页面呈现逻辑只实现了一次提高了可维护性。不会影响页面的SEO因为在客户端a /的href还是有效的。事实上WebForms是一个非常强大的模型所以ASP.NET MVC的View也使用了WebForms的引擎。通过上面这个例子我们其实还可以做到其他很多东西——例如用UserControl来生成XML数据因为UserControl本身不会带来任何额外的内容。 本文转自 jeffz 51CTO博客原文链接http://blog.51cto.com/jeffz/59534如需转载请自行联系原作者
http://wiki.neutronadmin.com/news/352569/

相关文章:

  • 网站备案抽查通过通过php安装wordpress
  • wordpress建好后安全网站seo置顶
  • 大地保险网站深圳龙岗好玩的地方
  • 中国住房和城乡建设部查询网站6国外域名拍卖网站
  • 手机网站引导页今天最新新闻摘抄
  • 大连建设工业产品网站企业建设网站哪家好
  • 做网站代理网站怎么谈微信微商城开发
  • 上海网站建设的wordpress 附件重命名
  • 佛山做外贸网站特色涪城移动网站建设
  • 网站建站网站80s隐秘而伟大网页制作源代码免费的
  • 红色ppt模板免费下载网站wordpress视频文件大小设置
  • 自动写作网站网页效果图设计流程
  • 建影楼网站多少钱番禺建设银行网站
  • 遵义市双控体系建设网站在线商城开发费用
  • 黑龙江省网站备案最轻快的wordpress主题
  • 济南制作网站公司哪家好购物网站建设优缺点
  • 西安网站快速备案企业网络设计方案论文
  • 海口网站建设流程网站开发流程详解
  • 有成功案例的网站互联网经营许可证
  • 网站建设费计入 科目怎样做电商网站的财务分析
  • 定制网站开发app费用快速建网站模板
  • 企业集团网站建设方案小米网站制作
  • 企业营销型网站做的好二维码生成器永久免费版下载
  • 临夏网站建设公司宣传策划方案模板
  • 福田祥菱v1单排南昌网优化seo公司
  • 哪个网站可以做会计题wordpress 文章页模板
  • 网站开发需要资质吗青海省住房和城乡建设局网站首页
  • 新西兰网站建设网页制作网页
  • 长春网站seo公司wordpress口语主题
  • 自己做局域网站鄞州区建设局网站