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

    }

  • 相关阅读:
    Linux HugePages及MySQL 大页配置
    tcp短连接TIME_WAIT问题解决方法大全
    从问题看本质: 研究TCP close_wait的内幕
    tcp_tw_recycle和tcp_timestamps的文章汇总
    MYSQL博客
    Tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项
    net.ipv4.tcp_tw_recycle
    TIME-WAIT和CLOSE-WAIT
    mysql 源码调试方法
    mysqldump 备份原理9
  • 原文地址:https://www.cnblogs.com/wusong/p/1971183.html
Copyright © 2011-2022 走看看