• 【转载】MVC2中自定义校验


    新建一个Mvc2的应用程序;

    在Models 文件夹下新建一个类EmailAttribute

     1 using System;
    2 using System.Collections.Generic;
    3 using System.Linq;
    4 using System.Web;
    5 using System.ComponentModel.DataAnnotations;
    6
    7 namespace MvcTemp.Models
    8 {
    9 public class EmailAttribute: RegularExpressionAttribute
    10 {
    11 public EmailAttribute()
    12 : base(@"^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$")
    13 {
    14 }
    15 }
    16 }

    重新编译下项目,下面演示如何自定义使用这个标记

    在Model文件夹下新建一个类Student

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using MvcTemp.Models;
    namespace MvcTemp.Model
    {
    public class Student
    {
    private int _id;
    [Required(ErrorMessage="必填")]
    public int Id
    {
    get { return _id; }
    set { _id = value; }
    }
    private string _name;
    [Required(ErrorMessage="必填")]
    public string Name
    {
    get { return _name; }
    set { _name = value; }
    }
    private string _emailAddress;
    [Email(ErrorMessage="错误的邮件地址")]
    public string EmailAddress
    {
    get { return _emailAddress; }
    set { _emailAddress = value; }
    }
    }
    }

    重新编译下项目,添加Controllers,

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
      
    namespace MvcTemp.Controllers
    {
        public class StudentController : Controller
        {
            //
            // GET: /Student/
      
            public ActionResult Index()
            {
                return View();
            }
      
            //
            // GET: /Student/Details/5
      
            public ActionResult Details(int id)
            {
                return View();
            }
      
            //
            // GET: /Student/Create
      
            public ActionResult Create()
            {
                return View();
            
      
            //
            // POST: /Student/Create
      
            [HttpPost]
            public ActionResult Create(FormCollection collection)
            {
                try
                {
                    // TODO: Add insert logic here
      
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }
              
            //
            // GET: /Student/Edit/5
       
            public ActionResult Edit(int id)
            {
                return View();
            }
      
            //
            // POST: /Student/Edit/5
      
            [HttpPost]
            public ActionResult Edit(int id, FormCollection collection)
            {
                try
                {
                    // TODO: Add update logic here
       
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }
      
            //
            // GET: /Student/Delete/5
       
            public ActionResult Delete(int id)
            {
                return View();
            }
      
            //
            // POST: /Student/Delete/5
      
            [HttpPost]
            public ActionResult Delete(int id, FormCollection collection)
            {
                try
                {
                    // TODO: Add delete logic here
       
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }
        }
    }

      在Global.asax页中注册自己定义的标记

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    using MvcTemp.Models;
    using System.ComponentModel.DataAnnotations;

    namespace MvcTemp
    {
    // 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,
    // 请访问 http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
    public static void RegisterRoutes(RouteCollection routes)
    {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
    "Default", // 路由名称
    "{controller}/{action}/{id}", // 带有参数的 URL
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
    );

    }

    protected void Application_Start()
    {
    AreaRegistration.RegisterAllAreas();
    DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAttribute), typeof(RegularExpressionAttributeAdapter));
    RegisterRoutes(RouteTable.Routes);
    }
    }
    }

       最后创建Student的Action视图即可

  • 相关阅读:
    编程填空:第i位替换
    poj 2192 Zipper
    3:拦截导弹
    vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
    数字三角形【汇总】
    codevs 1576 最长严格上升子序列
    3299 有序数组合并求第K大问题
    输出数组第k大的元素
    Java线程同步的Monitor机制(Lock配合Condition)
    堆排序Heapsort的Java和C代码
  • 原文地址:https://www.cnblogs.com/fx2008/p/2283175.html
Copyright © 2020-2023  润新知