gpt4 book ai didi

c# - .NET c# - 自定义显示属性

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:34 26 4
gpt4 key购买 nike

首先使用 Identity 2 的 .NET MVC 应用程序 EF 代码

每个应用程序用户都属于特定的用户类型 (ApplicationUser.user_type)。 (应用程序也使用 Identity 角色,但它们完全独立于此 user_type)。此外,我在模型和 View 模型的属性上广泛使用 Display 属性:

[Display(Name="some literal"]
public string someProperty { get; set; }

在 View 中:

@Html.LabelFor(model => model.someProperty)

或者 @Html.DisplayNameFor(model => model.someProperty)

但现在我需要在某些情况下,如果登录用户属于特定用户类型(“客户端”),则显示不同的内容。

实现这个的最佳方法是什么?我猜也许可以自定义 Display 属性,以便它接受参数“userType”,因此我可以用类似的东西装饰属性:

[Display(Name="This will be shown to users with user_type: Client", UserType="Client"]
[Display(Name="This will be shown to everyone else"]
public int myProperty { get; set; }

或类似的东西......但我不知道该怎么做......感谢任何帮助

最佳答案

在我看来,您似乎试图将太多的逻辑/责任放在一个地方。

我认为您会设法想出一些办法来处理这种情况,但是,如果您这样做了,您将面临最终得到一个相互纠结的属性的风险,该属性的行为将取决于各种外部参数。添加的越多,它就会变得越复杂。这可能很难维护。

我不喜欢“保持简单”,但我认为通过保持简单的维护方式它确实适用于此。

IMO 你有几个选择可以帮助你:

  • 为此客户页面创建一个全新的 View 和模型
  • 向包含该字符串的( View )模型添加一个属性。
  • 将字符串添加到页面并用 Razor 处理。
  • 使用 viewbag 或类似的临时数据容器

因此,总结一下:我不认为扩展 Display 属性是前往此处并考虑上述方法中的一种(或另一种)的方式。

关于c# - .NET c# - 自定义显示属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57084344/

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