请让我知道在记录类型的属性分配时调用验证属性的合适方法。 我创建了一个自定义验证属性,如下所示。
namespace FloAppCore
module CatalogueAttributes =
open System
open Newtonsoft.Json.Serialization
open Newtonsoft.Json
open System.Runtime.Serialization
open System.ComponentModel.DataAnnotations
open System.Text.RegularExpressions
[<AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = false)>]
type IsNameValidAttribute() =
inherit ValidationAttribute()
override this.IsValid(value: obj) =
let mutable result = true
if(not(isNull(value)) && (value.ToString() <> "")) then
result <- true
let fnSpecialCharacter value =
let pattern = Regex("[@#$%^&*()_+!~:;./?><]$")
let matches = pattern.Match value
not(matches.Success)
if result then
result <- (fnSpecialCharacter (value.ToString()))
result
override this.FormatErrorMessage(name:string) =
String.Format(this.ErrorMessageString,name)
我已将属性分配给这样的记录类型。
type Item = {
mutable Id:string
[<IsNameValid(ErrorMessage = "{0} value is not valid.")>]
Brand:string
ProductName:string
Description:string
ItemSizeId:string
ColourItemId:string
SpecialCharacteristics:string
}
与ASP.NET MVC不同,我使用Suave和asp.net核心,并使用Newtonsoft JsonConvert序列化/反序列化json对象。与ASP.NET MVC核心一样,如何在Suave中调用F#记录类型的模型绑定,以便调用验证属性并根据验证限制属性赋值。