我會非常感興趣的是,是否有更好的方法來實現以下內容。我不想創建複雜或不可維護的代碼。如何爲類庫中的過濾器/屬性指定MVC控制器/操作?
我正在創建一個將在未來的項目中實現的類庫。該庫包含一些繼承自ActionFilterAttribute的過濾器/屬性,實現應用程序可以使用它來裝飾控制器或操作。
一個例子是MustBeLoggedInAttribute。這將檢查cookie以查看當前用戶是否已登錄。如果存在有效的cookie,則不採取任何操作。如果沒有有效的cookie,則該屬性重定向到控制器和動作,例如, AuthController> Login()。
因爲有一個應用程序實現類庫,我不知道應用程序想要重定向到什麼控制器或動作。我想到了獲取這些信息的兩種方法。
獲取執行應用程序以在其web.config中指定控制器和操作名稱。
我通過檢查它們是否存在於實現應用程序的程序集中來驗證字符串名稱,否則請嘗試使用默認值。主頁>索引()。這種方法似乎有許多缺點,包括
使得實現應用較少的維護(更換控制器或者動作名稱意味着要更新web配置太)
我要驗證字符串名稱
的實現應用程序的開發人員需要閱讀的文件就知道來指定這個
有可能加載更多
具有過濾器/屬性需要兩個參數來指定控制器和動作
這也似乎有一些第一個想法,例如的陷阱的更新名稱(如果它們被更改的話),還有名稱將在整個實施應用程序中重複的事實。
我覺得必須有更好的方式來做到這一點,這將使實現應用程序可維護,不重複的代碼,而不是太複雜。 那是一廂情願嗎?
過濾器需要知道在哪裏重定向,但是最好的方法是什麼? 或者我應該以完全不同的方式來做到這一點?實現應用程序是否應該實現自己的過濾器/屬性,然後在我的類庫中使用公共方法來執行Cookie檢查?有更好的方法嗎?
我真的很感激人們對此的看法,因爲我真的不想創建錯誤的代碼。 非常感謝!
嗨@Darin,謝謝你的回覆。我會看看這個,讓你知道它是怎麼回事。這不是我以前做過的事情,所以有一個去做會很有趣。 – tekiegirl