gpt4 book ai didi

c# - ASP.NET Core 声明 Razorpages 上的空处理

转载 作者:行者123 更新时间:2023-11-30 22:53:04 24 4
gpt4 key购买 nike

我想知道处理声明的 null 检查的最干净的方法是什么?现在我的页面看起来被所有空检查污染了,我已经在使用自定义扩展和声明

var value = User.GetUserId(); // get ClaimType.UserId
if(string.IsNullOrWhiteSpace(value))
{
throw new NullReferenceException();
}

int userId;
if(!int.TryParse(value, out userId))
{
throw new NullReferenceException();
}

现在如果我得到比

更多的 claim
var value = User.GetUserId(); // get ClaimsType.UserId
var value2 = User.GetEmail(); // get ClaimsType.Email
if(string.IsNullOrWhiteSpace(value) || string.IsNullOrWhiteSpace(value2))
{
throw new NullReferenceException();
}

int userId;
if(!int.TryParse(value, out userId))
{
throw new NullReferenceException();
}

而且我必须经常在我的 Get 和 Post 处理程序上使用它。

有没有办法缩短或省略它?

最佳答案

您可以创建一个具有这些检查的自定义属性,然后用它装饰 ActionResult。或者,您可以创建过滤器

如果您想了解有关自定义属性的更多信息,请查看此文档:https://learn.microsoft.com/en-us/dotnet/standard/attributes/writing-custom-attributes

如果您想了解有关过滤器的更多信息,请查看此文档:https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-2.2

整个想法是这样的:

public class CheckClaimsAttribute : Attribute
{
//your checks here
}

然后

[HttpGet]
[CheckClaims]
public IActionResult MyGetMethod() {...}

[HttpPost]
[CheckClaims]
public IActionResult MyPostMethod() {...}

关于c# - ASP.NET Core 声明 Razorpages 上的空处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57615239/

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