ASP.NET MVC Framework体验(2):显示列表数据

简介:

概述

ASP.NET WebForm下,显示列表数据,经常会使用服务器控件GridView、DataList等。在ASP.NET MVC Framework中,我们有两种方式进行显示数据,一是使用行内代码,即通过循环视图数据使用<%=%>标记进行呈现;二是使用服务器控件,同样可以把视图数据绑定在服务器控件,如ASP.NET 3.5中的新控件ListView。

准备数据访问

这里我们显示一个Post的列表DataContext和实体定义如下:
[Database(Name="Blog")]
public class BlogDataContext : DataContext
{
    public BlogDataContext()
        : base(@"Server=.\Sql2005;User Id=sa;Password=;Database=Blog")
    { 
        
    }
    public Table<Post> Posts
    {
        get
        {
            return this.GetTable<Post>();
        }
    }
}
Post实体:
[Table(Name="Posts")]
public class Post
{
    [Column(IsPrimaryKey=true,IsDbGenerated = true)]
    public int Id
    {
        get; set;
    }
    [Column]
    public string Title
    {
        get; set;
    }
    [Column]
    public string Author
    {
        get; set;
    }
    [Column]
    public DateTime PubDate
    {
        get; set;
    }
    [Column]
    public string Description
    {
        get; set;
    }
}
同时,我们定义一个BlogRepository类,用于读取Post数据,这样可以使得Controller中代码更加优雅,不再涉及数据访问:
public class BlogRepository
{
    public List<Post> GetAll()
    {
        BlogDataContext db = new BlogDataContext();
        IEnumerable<Post> posts = from p in db.Posts
                    orderby p.PubDate
                    select p;
        return posts.ToList<Post>();
    }
}

定义Controller

这里的Controller定义就非常简单了,获取所有Post数据,然后把数据传给视图
public class BlogController : Controller
{
    [ControllerAction]
    public void Index()
    {
        // 获取所有post数据
        BlogRepository repository = new BlogRepository();
        List<Post> posts = repository.GetAll();
        // 转向视图Index,显示Post列表
        RenderView("Index", posts);
    }
}

定义View

添加一个Index视图,并使其继承于ViewPage<List<Post>>。
1.使用行内代码显示,进行数据的循环并使用ViewPage提供的HtmlHelper方法。
<h3>1.使用行内代码</h3>
    <%=Html.ActionLink("Home", new { action="Index"})%> |
    <div>
        <%foreach (Post post in ViewData)
          { %>
        <div class="postitem">
            <strong>Title</strong><%=Html.Encode(post.Title) %></br>
            <strong>Author</strong><%=Html.Encode(post.Author) %></br>
            <strong>PubDate</strong><%=Html.Encode(post.PubDate.ToShortDateString()) %></br>
            <strong>Content</strong><%=Html.Encode(post.Description) %></br>
        </div><br />
        <% } %>
    </div>
在HTML代码中编写时VS2008同样提供了很好的智能提示功能:
 
2.使用服务器控件ListView,编写代码如下:
<h3>使用ListView控件</h3>
    <asp:ListView ID="ListView1" runat="server">
        <LayoutTemplate>
              <div>
                     <asp:PlaceHolder ID="itemPlaceHolder" Runat="server"/>
             </div>
        </LayoutTemplate>
        <ItemTemplate>
            <div class="postitem">
            <strong>Title</strong><%# Eval("Title") %></</br>
            <strong>Author</strong><%# Eval("Author")%></br>
            <strong>PubDate</strong><%# Eval("PubDate")%></br>
            <strong>Content</strong><%# Eval("Description") %></br>
        </div><br />
        </ItemTemplate>
    </asp:ListView>
在后台代码中进行ListView的数据绑定,这里仅仅是对把视图数据绑定到了ListView上面,从数据库中获取数据交给Controller去做。
public partial class Views_Blog_Index : ViewPage<List<Post>>
{
    protected void Page_Load(object sender, EventArgs e)
    {
        this.ListView1.DataSource = ViewData;
        this.ListView1.DataBind();
    }
}

设置路径选择

同样我们需要进行路径选择的设置
void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup
    RouteTable.Routes.Add(
                new Route
                {
                    Url = "[controller]/[action].mvc",
                    Defaults = new { action = "Index" },
                    RouteHandler = typeof(MvcRouteHandler)
                });
}
完成后,运行可以看到,使用行内代码和ListView控件的效果是一样的
 
 

结束语

在文章结束时,顺便说一下,好多朋友都问为什么有了WebForm,还要再出一个ASP.NET MVC Framework,对于这个问题,建议大家阅读一下这篇文章 What's Ailing ASP.NET Web Forms

示例代码下载:/Files/Terrylee/MVCDemo02.rar











本文转自lihuijun51CTO博客,原文链接:http://blog.51cto.com/terrylee/67776 ,如需转载请自行联系原作者





相关文章
|
4月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1040 2
|
7月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
1118 3
|
4月前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
1034 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
|
5月前
|
C++
提示缺少.NET Framework 3.5 安装错误:0x80070002、0x800F0950\0x80004002
.NET Framework常见问题及解决方法汇总,
714 0
|
7月前
|
C++ Windows
WindowsDLL修复专家,MSVCP**、DLL修复vcruntime**、DLL修复、`.Net Framework`缺失、DirectX类DLL修复、VC运行库修复
Windows DLL修复专家是一款专为解决因DLL文件缺失、版本错误导致的软件或游戏无法运行问题的系统工具。它支持一键扫描和修复各类DLL异常,涵盖MSVCP、vcruntime、.NET Framework、DirectX等多种常见问题。具备自动检测、备份还原功能,确保修复过程安全可靠。适用于软件报错、系统异常及新系统适配场景,降低用户手动修复门槛,提升系统稳定性与兼容性。
308 3
|
6月前
.NET Framework 3.5离线安装包合集下载
本文介绍了如何获取和安装.NET Framework运行库离线合集包。用户可通过提供的链接下载安装包,安装过程简单,按提示逐步操作即可完成。安装时可选择所需版本,工具会自动适配架构,无需手动判断,方便高效。
5263 0
|
10月前
|
网络协议 定位技术 网络安全
IPIP.NET-IP地理位置数据
IPIP.NET 是一家专注于 IP 地理位置数据的提供商,基于 BGP/ASN 数据与全球 800+ 网络监测点技术,提供高精度的 IPv4 和 IPv6 定位服务。其核心服务包括地理位置查询、详细地理信息和网络工具等,广泛应用于网络安全、广告营销、CDN 优化等领域。数据覆盖全球,支持多语言,每日更新确保实时性。IPIP.NET 提供 API 接口、离线数据库及多种语言 SDK,方便开发者集成使用。
2067 0
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
515 5
|
开发框架 缓存 监控
NET Framework 到 .NET 5/6 的迁移是重大的升级
本文详细介绍了从 .NET Framework 4.8 迁移到 .NET 5/6 的过程,通过具体案例分析了迁移策略与最佳实践,包括技术栈评估、代码迁移、依赖项更新及数据库访问层的调整,强调了分阶段迁移、保持代码可维护性及性能监控的重要性。
239 3