• MVC 验证和异常处理 手工激活验证


    不管是通过action参数获取一个model,或者是手工calling UpdateModel()还是TryUpdateModel(),默认的DefaultModelBinder都将自动执行合法验证。但是,你用其他的方法更新model时,自动验证则会跳过。例如:

    public ActionResult MakeBooking(string clientName, DateTime? appointmentDate,

                                    bool acceptsTerms)

    {

        var appt = new Appointment {

            ClientName = clientName,

            AppointmentDate = appointmentDate.GetValueOrDefault()

        };

        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

    }

    Controller基类提供了两个基本方法让我们手工触发验证

    •  ValidateModel() 验证,如果不合法,将登记错误,并抛出 InvalidOperationException异常

    .

    •  TryValidateModel()  相对ValidateModel区别在于不抛出异常,只是返回和ModeState.IsValide一样的值。

  • 相关阅读:
    勿忘心安
    设△ABC的内角A,B,C,所对的边分别为a,b,c,且acosB-bcosA=3/5c,则tan(A-B)的最大值为
    P1011 车站
    第一天
    P1134 阶乘问题
    P3152 正整数序列
    某数论
    DO YOU WANNA BUILD A SNOW MAN ?
    luogu P1579 哥德巴赫猜想(升级版)
    紫书 习题 10-25 UVa 1575 (有重复元素的全排列+暴搜)
  • 原文地址:https://www.cnblogs.com/wusong/p/1971265.html
Copyright © 2020-2023  润新知