- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
晚上好
我在模型绑定(bind)和验证方面遇到问题,但我不知道这是否是正常行为:问题是,尽管 BindAttribute(正确填充了他的属性 Excluded),排除的属性已验证但未验证在 ModelState 字典中删除...所以我的观点出现错误...关于排除的属性!呸!
那么,有没有办法直接在我的模型验证器中获取“非排除属性”列表,这样我就可以告诉我的验证服务不要验证排除的属性?
这里是验证器提供者和验证器本身(只是伟大的 FluentValidator 的内部包装器)
internal sealed class ValidationProvider : ModelValidatorProvider {
private readonly IValidationFactory _validationFactory;
public ValidationProvider(IValidationFactory validationFactory) {
_validationFactory = validationFactory;
}
public override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context) {
if (metadata.ModelType != null) {
IValidationService validationService;
if (_validationFactory.TryCreateServiceFor(metadata.ModelType, out validationService)) {
yield return new ValidationAdapter(metadata, context, validationService);
}
}
}
private sealed class ValidationAdapter : ModelValidator {
private readonly IValidationService _validationService;
internal ValidationAdapter(ModelMetadata metadata,
ControllerContext controllerContext,
IValidationService validationService)
: base(metadata, controllerContext) {
_validationService = validationService;
}
public override IEnumerable<ModelValidationResult> Validate(object container) {
if (Metadata.Model != null) {
IEnumerable<ValidationFault> validationFaults;
if (!_validationService.TryValidate(Metadata.Model, out validationFaults)) {
return validationFaults.Select(fault => new ModelValidationResult {
MemberName = fault.PropertyInfo.Name,
Message = fault.FaultedRule.Message
});
}
}
return Enumerable.Empty<ModelValidationResult>();
}
}
}
这是 Action :
public class MyModel {
public string Test { get; set; }
public string Name { get; set; }
}
[HttpPost]
public ActionResult Test([Bind(Exclude = "Test")] MyModel model) {
if (ModelState.IsValid) {
...
}
return View();
}
在这里,我得到排除的“测试”属性的错误...哈!
谢谢!
最佳答案
这是预期的行为。此更改(始终进行整个模型验证)是在 MVC 2 发布周期的后期根据客户反馈(以及最小意外原则)做出的。
更多信息:
http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html
关于c# - 通过 ASP.NET MVC 3 中的 BindAttribute 和 ModelValidator 排除的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480781/
我使用 Devexpress XPO 作为 ORM,我将使用 ASP.NET 核心创建一个 OData Web API。 Devexpress 创建了一个 example在 ASP.NET 经典中,我
我只是 Adempiere 的新手。我下载了 Adempiere 的项目并运行安装程序。之后,我就遇到了这个错误,并且在 google 上找不到答案。 有谁对这个错误有任何想法吗? 最佳答案 您遇到的
晚上好 我在模型绑定(bind)和验证方面遇到问题,但我不知道这是否是正常行为:问题是,尽管 BindAttribute(正确填充了他的属性 Excluded),排除的属性已验证但未验证在 Model
我是一名优秀的程序员,十分优秀!