gpt4 book ai didi

c# - MVC 模型绑定(bind) - 验证每个属性?

转载 作者:行者123 更新时间:2023-11-30 16:22:01 26 4
gpt4 key购买 nike

我有一些通用验证,我希望对每个模型的每个字符串属性应用一揽子验证。我正在考虑子类化 DefaultModelBinder 并通过覆盖 BindProperty 方法添加逻辑。这样做合适吗?

最佳答案

  1. 编写您自己的自定义模型绑定(bind)程序。
  2. 使用反射获取所有属性
  3. 检查属性是否为string
  4. 使用反射获取属性的值
  5. 运行自定义验证并将验证错误添加到 ModelState

示例

public class MyCustomModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
foreach (var propertyInfo in typeof(bindingContext.Model.GetType().GetProperties(BindingFlags.Public|BindingFlags.Instance))
{
if (propertyInfo.PropertyType == typeof(string))
{
var value = propertyInfo.GetValue(bindingContext.Model);
// validate
// append to ModelState if validation failed
bindingContext.ModelState.AddModelError(propertyInfo.Name, "Validation Failed");
}
}
}
}

使用模型绑定(bind)器

public ActionResult MyActionMethod([ModelBinder(typeof(MyCustomModelBinder ))] ModelType model)
{
// ModelState.IsValid is false if validation fails
}

更多信息

关于c# - MVC 模型绑定(bind) - 验证每个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12801658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com