MVC让人惊叹

RT,MVC模式里面太多让人惊叹的事情,
有时候会情不自禁的和webform比较,webform显的有些苍白。
我想这也是它流行的重要原因之一。控制方便,逻辑清晰,代码简洁。
今天接触的是MVC里集成的验证,真是让我大呼爽快,
在实体类里定义的属性的验证限制,然后在控制类try一下,视图就自动提示。
这个可比webform的控件方便多了,虽然原理估计差不多,但是看起来却清晰了。

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>

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

ASP.NET MVC初体验

昨天半夜装好了mvc1.0 之前已经在vs2008上面装了MVC2.0。昨晚想看看教程的例子,发现打不开,上网一查才知道,2.0不兼容1.0了,要转换的话还得手动搞。教程是1.0的,然后就装了个1.0。

今天开始学ASP.NET MVC。手上有一个教程 121页的word文档。按着文档看,操作,现在到 54页。
1.知道了MVC的框架结构和工作流程(有一个简单的例子)
2.了解了URL路由的原理,和简单的自定义路由。(也有一个简单的例子)
3.做了一个MVC的例子,大概就是查看、添加、删除得功能。使用Linq to SQL做的Modle。

Linq to SQL做Modle真是超级简单。MVC做Web应用程序的webform做的经过相差不大。感觉MVC要爽一些。可以更加自由的控制行为。
教程的例子有点点小问题,顺便修改下,顺便把自己的想法也加上去。嗯,还是很好的教程的。
然后MVC操作都是英文的,注释是英文的,这个比较闷,就当做学英文了。。。
第一次学习使用MVC做程序,感觉还是蛮简单的。没有向之前想象的那么困难。可能后面的会复杂些。但也算是开个好头了,明天继续