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

    }

  • 相关阅读:
    BZOJ2697 特技飞行 【贪心】
    BZOJ2795/2890/3647 [Poi2012]A Horrible Poem 【字符串hash】
    BZOJ2823 [AHOI2012]信号塔 【最小圆覆盖】
    BZOJ2924 [Poi1998]Flat broken lines 【Dilworth定理 + 树状数组】
    洛谷P3759 [TJOI2017]不勤劳的图书管理员 【树状数组套主席树】
    POJ 2955
    江南大学第三届程序设计竞赛K题
    Codeforces 894C
    Codeforces 894B
    HDU 1789
  • 原文地址:https://www.cnblogs.com/wusong/p/1971183.html
Copyright © 2011-2022 走看看