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

    }

  • 相关阅读:
    angluar 判断后跳转加参数
    angular 返回上一页
    angular 组件跳转组件 并传参数
    angluar 表单提交时候报错
    angular 中获取select选中的值
    javascript
    将数据渲染到页面的方式:模版
    将数据渲染到页面的几种方式
    跨域
    ajax
  • 原文地址:https://www.cnblogs.com/wusong/p/1971183.html
Copyright © 2011-2022 走看看