से एक जटिल ऑब्जेक्ट पुनर्प्राप्त करें मैं एक एमवीसी प्रोजेक्ट पर काम कर रहा हूं जहां नियंत्रक क्रियाएं संपत्तियों से निपटती हैं। विभिन्न नियंत्रकों अलग तरीके से assetid पैरामीटर में ले: कुछ नियंत्रकों बस int assetId
, अन्य int id
मिलता है, और अन्य एक जटिल वस्तु AssetDTO dto
एक्शन पैरामीटर
मैं एक ActionFilter कि में जोड़ा जाता है लिख रहा हूँ (जो एक संपत्ति है कि assetid रखती शामिल हैं) का उपयोग करते हुए एक्शन विधि और एक्शन पैरामीटर नाम के साथ प्रदान किया जाता है जहां मुझे संपत्ति मूल्य मिल सकता है।
कार्रवाई विधि:
[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 एक आदिम रूप में प्रदान की जाती है काम करेंगे। मुझे यकीन नहीं है कि जब परिसंपत्ति आईडी को जटिल विधि में क्रिया विधि में प्रदान किया जाता है तो क्या करना है।
क्या मुझे इस प्रकार के आधार पर अलग-अलग ऑब्जेक्ट को अलग करने की आवश्यकता होगी? मुझे आशा है कि मैं AssetIdFilter में किसी प्रकार का डॉट-नोटेशन निर्दिष्ट कर सकता हूं ताकि यह कह सके कि संपत्ति कहाँ स्थित है: dto.assetId
कोई भी तरीका मैं गतिशीलता का उपयोग कर सकता हूं? या प्रतिबिंब ?? ect। ???