zoukankan      html  css  js  c++  java
  • MVC 验证和异常处理 自动验证使用 IDataErrorInfo 接口

    除了DataAnnotationsModelValidationFactory,还有DataErrorInfoModelValidatorProvider。DataErrorInfoModelValidatorProvider提供另一种自定义数据合法性验证支持。Asp.net mvc硬编码支持IDataErrorInfo接口。使用方法为model实现IDataErrorInfo。IDataErrorInfo要求实现返回model级别和属性级别违法信息。

    示例:

    public class Appointment : IDataErrorInfo

    {

        public string ClientName { get; set; }

        public DateTime AppointmentDate { get; set; }

        public string this[string columnName]

        {

            get { 

                if (columnName == "ClientName") {

                    if (string.IsNullOrEmpty(ClientName))

                        return "Please enter a name.";

                }

                if (columnName == "AppointmentDate")

                {

                    if (AppointmentDate < DateTime.Now.Date)

                        return "Bookings cannot be placed in the past";

                }

                return null; // No property-level errors

            }

        }

        public string Error

        {

            get {

                if (ClientName == "Steve"

                    && AppointmentDate.DayOfWeek == DayOfWeek.Saturday)

                    return "Steve can't book on Saturdays.";

                return null; // No object-level errors

            }

        }

    }

    public ActionResult MakeBooking(Appointment appt, bool acceptsTerms)

    {

        if (!acceptsTerms)

            ModelState.AddModelError("acceptsTerms", "You must accept the terms");

        if (ModelState.IsValid) {

            // To do: Actually save the appointment to the database or whatever

            return View("Completed", appt);

        }

        else

            return View(); // Re-renders the same view so the user can fix the errors

    }

  • 相关阅读:
    HTTP权威指南笔记-1.概述
    C# 设计模式之工厂模式(一)
    C# 读取Excel内容
    C# 反射
    C# 分部类与分部方法
    图像处理
    mysql 使用问题?
    第一节mysql 安装
    软件包管理
    第四节基础篇
  • 原文地址:https://www.cnblogs.com/wusong/p/1971183.html
Copyright © 2011-2022 走看看