我一直在围绕这个问题绕圈子,有很多人有和我类似的问题,但没有一个是相同的。我正在尝试完全设置颤振,但无法解决其中一个问题。
当我运行 flutter doctor -v 时,我得到以下输出:
[?] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18362.657], locale en-GB)
• Flutter version 1.12.13+hotfix.8 at C:\flutter
• Framework revision 0b8abb4724 (3 weeks ago), 2020-02-11 11:44:36 -0800
• Engine revision e1e6ced81d
• Dart version 2.7.0
[!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
• Android SDK at C:\Users\%username%\AppData\Local\Android\Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.3 …Run Code Online (Sandbox Code Playgroud) 嗨,我允许客户制作要显示的事件,这些日期有ToDate和FromDate,我需要检查ToDate是在未来还是与FromDate;相同。我使用了这个流畅的验证。
public class EventDateValidator : AbstractValidator<Event>
{
public EventDateValidator()
{
RuleFor(evd => evd.FromDate)
.NotEmpty().WithMessage("*Required");
RuleFor(evd => evd.ToDate)
.NotEmpty().WithMessage("*Required")
.GreaterThanOrEqualTo(r => r.FromDate)
.WithMessage("Date To must be after Date From");
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是当创建表单加载时会抛出一个空引用错误:
处理请求时发生未处理的异常。NullReferenceException:未将对象引用设置为对象的实例。FluentValidation.AspNetCore.MinLengthClientValidator.AddValidation(ClientModelValidationContext context) in MinLengthClientValidator.cs,第 22 行
GreaterThan 工作得很好,但是如果它的一天事件验证失败。
这是我第一次使用fluent,所以我的知识非常有限。我实际上是用这个问题来让我开始的。
我想尝试一下使用 Blazor 服务器端,到目前为止,我已经设法以某种方式克服了大多数令人头疼的问题,并且很享受它,直到现在。
我正在尝试为 Google Recaptcha v3 编写一个验证器,它需要用户的 IP 地址。通常我会通过以下方式获取 IHttpContextAccessor:
var httpContextAccessor = (IHttpContextAccessor)validationContext.GetService(typeof(IHttpContextAccessor));
Run Code Online (Sandbox Code Playgroud)
但现在返回 null!我还发现尝试以相同的方式获取 IConfiguration 失败了,但为此,我可以在 Startup.cs 中创建一个静态属性。
这是一天工作中的最后一个障碍,这让我感到困惑。
关于如何将该 IP 地址输入验证器有什么想法吗?
谢谢!
编辑:
我刚刚发现 httpContextAccessor 为空的错误!
((System.RuntimeType)validationContext.ObjectType).DeclaringMethod抛出“System.InvalidOperationException”类型的异常
这是验证器:
public class GoogleReCaptchaValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Lazy<ValidationResult> errorResult = new Lazy<ValidationResult>(() => new ValidationResult("Google reCAPTCHA validation failed", new String[] { validationContext.MemberName }));
if (value == null || String.IsNullOrWhiteSpace(value.ToString()))
{
return errorResult.Value;
}
var configuration = Startup.Configuration;
string reCaptchResponse = value.ToString(); …Run Code Online (Sandbox Code Playgroud) 我目前正在使用 .net core 2.2 和 EntityFramework 制作一个网络应用程序。
我有一个模型,它有 2 个计算属性“AgeYears”和“AgeMonths”,这些属性是根据类库的属性“Birthday”计算的。
当我运行 Web 应用程序,并且存在包含此模型的提取时,会引发错误:
System.InvalidOperationException:找不到实体类型“HorseModel”的属性“AgeMonths”的支持字段,并且该属性没有设置器。
我试图通过阅读几篇文章来弄清楚发生了什么,其中一篇位于 Microsoft 网站上,但只返回名字和姓氏(全名)的简单串联,而另一篇似乎不是最新的因为有些属性根本不可用,例如[计算]。通常,我不会理会属性,而只是在视图或页面模型中进行计算,但愚蠢地认为这将是一个更好/更干净的想法!?
这是导致问题的模型部分:
public DateTime Birthday { get; set; }
[NotMapped]
public int AgeYears
{
get
{
return DateTimeSpan.CompareDates(DateTime.Now, Birthday).Years;
}
}
[NotMapped]
public int AgeMonths
{
get
{
return DateTimeSpan.CompareDates(DateTime.Now, Birthday).Months;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试删除数据库和迁移,并在尝试再次运行初始迁移时出现错误,尽管将 [NotMapped] 添加到属性中。
我期望发生的是,当从数据库中获取记录时,会计算这些属性,并认为不需要将它们存储在数据库中。显然,我做错了什么,我认为这与使用我自己的函数进行计算有关。
为了使其工作,我按照错误建议添加了一个支持字段,当我查看迁移时,我注意到仍然为“NotMapped”值生成列。
migrationBuilder.CreateTable(
name: "Horses",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("Sqlite:Autoincrement", true),
Name = table.Column<string>(nullable: true),
Birthday = table.Column<DateTime>(nullable: false),
AgeYears = table.Column<int>(nullable: false), …Run Code Online (Sandbox Code Playgroud)