网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

在Asp.netMVC中使用Repeater

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

  1. Repeater需要手动去绑定数据。 意思是说我们要在View当中写 服务端代码,先从ViewData中取得数据,再去绑定到Repeater。

  2. 如果一个页面用到n+1个Repeater,那会不会疯掉? 而且要给每一个Repeater指定 Id,必去绑数据,头痛啊!!!

  那么~~ 可不可以让Repeater用起来简单点呢? 来对Repeater进行一下改造,达到目的。

  在Mvc当中,使用 ViewData 来传递数据,那可不可以直接让Repeater 绑定 ViewData 中的数据呢? 当然可以

  看改造后的 Repeater 源码:

  using ...System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Web;

  using System.Web.UI.WebControls;

  using System.Web.Mvc;

  namespace RepeaterInMvc.Codes

  ...{

  public class MvcRepeater : Repeater

  ...{

  ///

  /// ViewData中的键名

  ///

  public string Key ...{ get; set; }

  ///

  /// 得到ViewPage对象

  ///

  protected ViewPage ViewPage

  ...{

  get ...{ return base.Page as ViewPage; }

  }

  ///

  /// 重写Onload事件 用于绑定数据

  ///

  /// "e">

  protected override void OnLoad(EventArgs e)

  ...{

  this.DataSource = this.ViewPage.ViewData[this.Key]; //得到数据源

  this.DataBind();    //绑定 这样就不用手动写N个绑定了

  base.OnLoad(e);

  }

  }

  }

  1. 添加了一个公共属性 Key ,表示这个Repeater要绑定 ViewData 中哪一项数据。

  2. 添加了一个保护属性 ViewPage ,指向了当前的 Page 对象 并强制转换成 Mvc 的 ViewPage对象 (因为我们要得到ViewData或其它Mvc相关的上下文信息)

  3. 重写了 OnLoad 事件,重写这个事件,用来绑定数据,免得我们需要在View中手动绑定每一个Repeater,那多烦啊。

  现在我们的目的已经达到了。看看怎么使用吧:

  控制器代码:

  上面的代码做了什么:

  public ActionResult Index()

  ...{

  //来点测试数据

  List entities = new List();

  entities.Add(new RepeaterInMvc.Models.TestInfo ...{ Id = 1, Name = "Kagilo1", Email = "1@1.com" });

  entities.Add(new RepeaterInMvc.Models.TestInfo ...{ Id = 2, Name = "Kagilo2", Email = "1@1.com" });

  entities.Add(new RepeaterInMvc.Models.TestInfo ...{ Id = 3, Name = "Kagilo3", Email = "1@1.com" });

  entities.Add(new RepeaterInMvc.Models.TestInfo ...{ Id = 4, Name = "Kagilo4", Email = "1@1.com" });

  entities.Add(new RepeaterInMvc.Models.TestInfo ...{ Id = 5, Name = "Kagilo5", Email = "1@1.com" });

  ViewData["TestList"] = entities;

  return View();

  }

  再看看页面代码:

  <%@ Register Assembly="RepeaterInMvc" Namespace="RepeaterInMvc.Codes" TagPrefix="mvc" %>

  <asp:Content ID="indexTitle" ContentPlaceHolderID="TitleContent" runat="server">

  Home Page

  </asp:Content>

  <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">

  <h2>Repeater示例</h2>

  <p>

  <mvc:MvcRepeater Key="TestList" runat="server">

  <ItemTemplate>

  <div style="height:30px; line-height:30px;"><%# Eval("Id") %>, <%# Eval("Name") %>, <%# Eval("Email") %></div>

  </ItemTemplate>

  <AlternatingItemTemplate>

  <div style="height:30px; line-height:30px; background:#eeeeee;"><%# Eval("Id") %>, <%# Eval("Name") %>, <%# Eval("Email") %></div>

  </AlternatingItemTemplate>

  </mvc:MvcRepeater>

  </p>

  </asp:Content>

  注册

  <%@ Register Assembly="RepeaterInMvc" Namespace="RepeaterInMvc.Codes" TagPrefix="mvc" %>

  在当前页面注册控件!!! 当然,你也可以在 web.config 中的 page/controls 节点中为所有页面注册。

设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师