小编Sul*_*man的帖子

如何在 ASP.NET Core 2.1 中出现第一次错误后停止验证

我知道针对其他框架和语言多次询问这个问题,但我想知道一旦模型验证在 ASP.NET Core 2.1 中出现第一个错误,我如何才能真正停止模型验证?

    [Required(ErrorMessage = Email.requiredErrorMessage)]
    [DataType(DataType.EmailAddress, ErrorMessage = Email.formatErrorMessage)]
    [StringLength(Email.maximumLength, MinimumLength = Email.minimumLength, ErrorMessage = Email.rangeErrorMessage)]
    [EmailExists(ErrorMessage = Email.doesNotExistsMessage)]
    public string email { get; set; }

    [Required(ErrorMessage = ConfirmationCode.requiredErrorMessage)]
    [RegularExpression(ConfirmationCode.regularExpression, ErrorMessage = ConfirmationCode.formatErrorMessage)]
    public string confirmationCode { get; set; }
Run Code Online (Sandbox Code Playgroud)

上面的代码是 API 模型验证,在发出补丁请求时,我收到以下响应:

"email":[
"This email does not exist in database"
],
"confirmationCode":[
"Confirmation code format is invalid"
]
}
Run Code Online (Sandbox Code Playgroud)

我不希望模型验证在确保数据库中不存在电子邮件时继续,只需返回该错误并且不再继续验证。

c# model-validation asp.net-core-webapi asp.net-core-2.1

3
推荐指数
1
解决办法
910
查看次数

Asp.Net Core Razor 页面,无法从其他视图/剃刀模型访问会话变量

我正在登录页面中保存会话变量,

Guid sessionId = Guid.NewGuid();

HttpContext.Session.SetString("sessionId",sessionId.ToString());
Response.Cookies.Append("sessionId", sessionId.ToString());
Run Code Online (Sandbox Code Playgroud)

现在我像这样访问这个变量:

string sessionId = Request.Cookies["sessionId"];            

if (!String.IsNullOrEmpty(sessionId) && sessionId.Equals(HttpContext.Session.GetString("sessionId")))
{
    return RedirectToPage("/LoggedIn/Index");
}

return Page();
Run Code Online (Sandbox Code Playgroud)

我在声明会话 ID 的同一剃刀页面(登录页面)上使用了此代码,但是如果我在任何其他剃刀视图页面中使用上述代码,则无法访问此会话变量。它只能在保存的同一页面上访问。

我可能做错了什么?

c# session-variables asp.net-core razor-pages asp.net-core-2.1

1
推荐指数
1
解决办法
5745
查看次数