MVC 视图(显示数据库数据表格) -简易



已经准备两点,但是却很兴奋睡不着。
MVC中显示数据表格,真是太兴奋了,这种显示方式正式我以前所希望看到的。webform直接控件搞定,虽然是方便,总感觉没有现在这样的自定义的爽哈哈。
这只是一个很简单的例子。。。。哇哈哈,越来越好玩了。
第一种方法:在视图本身中执行所有的格式化

Movies表
Id                         int                                主键、标识
Title                     nvarchar(200)
Director              nvarchar(200)
DateReleased datetime

/*Linq to sql 做的model*/
Controllers/HomeContronller


        [HandleError]
        public ActionResult Movie()
        {
            var dataContext=new MovieDataContext ();
            var movis = from m in dataContext.Movies select m;

            return View(movis);
        }



Views/Home/Movie.aspx


<table>
    <tr>
        <th>Id</th><th>Title</th><th>Release Date</th>
    </tr>
    <% foreach (Movies m in (IEnumerable)ViewData.Model)
       { %>
       <tr>
           <td><%= m.Id%></td>
           <td><%= Html.Encode(m.Title)%></td>
           <td><%= m.DateReleased%></td>
       </tr>
    <% } %>
    </table>



第二种方法
使用局部页面(partial)作为一个模板来格式化每一个数据库记录
新建一个用户空间页面作为局部页面MovieTemplate.ascx,
这个页面必须放在Views/Shard/或者具体的控制视图文件夹内例如:Views/Home/
因为MovieTemplate类继承自这个类,ViewData.Model属性自动转换为Movie


<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MovieTemplate.ascx.cs" Inherits="HtmlHelpersTest.Views.Shard.MovieTemplate" %>
<tr>
    <td><%= ViewData.Model.Id %></td>
    <td><%= Html.Encode(ViewData.Model.Title) %></td>
    <td><%= ViewData.Model.DateReleased.ToString("D") %></td>
</tr>


后台代码,继承System.Web.Mvc.ViewUserControl 泛型


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using HtmlHelpersTest.Models;

namespace HtmlHelpersTest.Views.Shard
{
    public partial class MovieTemplate : System.Web.Mvc.ViewUserControl<Movies>
    {
    }
}

movie.aspx视图

    <table>
    <tr>
        <th>Id</th><th>Title</th><th>Release Date</th>
    </tr>
    <% foreach (Movies m in (IEnumerable)ViewData.Model)
       {
           Html.RenderPartial("MovieTemplate", m);
      
       } %>
    </table>

效果和第一种方法是一样的。

引用地址:

评论:

  1. cordyceps  on 2011-11-25 13:45

    谢谢分享!

发表评论: