亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以將路由值綁定到 ASP.NET Core Web API 中的自定義屬性的屬性?

是否可以將路由值綁定到 ASP.NET Core Web API 中的自定義屬性的屬性?

C#
忽然笑 2022-12-24 10:36:26
在 ASP.NET Core Web API 中,我有一個自定義屬性,用于在請求到達控制器操作之前授權請求。在下圖中,“ SecureMethod ”是自定義屬性。我想在自定義屬性中添加一個屬性,我想綁定到其中一個路由值,請參考下圖:我想將“userIDs”路由值綁定到自定義屬性的屬性之一(“UserIDs”,這是一個示例屬性)。有什么方法可以將路由值綁定到自定義屬性的屬性嗎?
查看完整描述

2 回答

?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

一種方法是將路由參數的名稱傳遞給屬性,并檢查屬性本身中的路由數據。例如:


[SecureMethod(PermissionRequired = AccessPermissionEnum.DeleteUsers, UserIdsKey = "userIds")]

然后是這樣的:


public AccessPermissionEnum PermissionRequired { get; set; }

public string UserIdsKey { get; set; }


public override void OnActionExecuting(ActionExecutingContext context)

{

    // Depending on how you pass your userIds to the action, you

    // may need to use something else from context to get the data,

    // but it's all available in there.

    var userIds = context.ActionArguments[UserIdsKey];


    // Do something with the ids.


    base.OnActionExecuting(context);

}

雖然這行得通,并且在某些地方確實行之有效,但您應該知道過濾器現在對傳入的參數有深入的了解。在大多數情況下,這通常無關緊要,但這是您需要的一種方法不應該到處使用,因為如果使用不當,最終會增加很多耦合。這是一個不時使用的有用工具。


查看完整回答
反對 回復 2022-12-24
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

不,這是不可能的。

屬性參數僅限于以下類型的常量值:

  • 簡單類型(bool、byte、char、short、int、long、float 和 double)

  • 細繩

  • 系統類型

  • 枚舉

  • 對象(對象類型的屬性參數的參數必須是上述類型之一的常量值。)

  • 任何上述類型的一維數組

您不能嵌套屬性,也不能將非常量值傳遞給屬性參數。即使您可以將屬性參數聲明為類型對象,您傳入的實際參數仍然必須是常量字符串、bool 等(將其聲明為對象僅意味著您可以在每次聲明屬性時使用這些類型中的任何一種) .


查看完整回答
反對 回復 2022-12-24
  • 2 回答
  • 0 關注
  • 166 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號