我正在處理控制器操作處理資產的MVC項目。不同的控制器採取不同的方式,由assetid參數:有些控制器簡單地得到int assetId
,其他int id
,並使用複雜的對象AssetDTO dto
(其中包含持有由assetid屬性)從ActionParameters檢索複雜的對象
我寫的是被添加到一個ActionFilter其他動作方法,並提供actionParameter名稱,我可以獲取資產值。
操作方法:
[AssetIdFilter("assetId")]
public ActionResult Index(int assetId)
{
...
}
的屬性定義爲:
public class AssetIdFilterAttribute : ActionFilterAttribute
{
public string _assetIdParameterKey { get; set; }
public AssetIdFilterAttribute (string assetIdParameterKey)
{
_assetIdParameterKey = assetIdParameterKey;
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int assetId;
if (Int32.TryParse(filterContext.ActionParameters[_assetIdParameterKey].ToString(), out assetId))
{
......
}
}
可正常工作,但是當由assetid作爲一種原始的提供只會工作。我不確定在一個複雜的對象中將assetId提供給action方法時該怎麼做。
我需要根據類型分別解析每個對象嗎?我希望我可以在AssetIdFilter中指定某種點符號來告訴它assetid所在的位置:dto.assetId
任何我可以使用動態的方法?或反思?等。???