2012-01-12 12 views
5

मेरे पास एक वेब पेज है जो एक तिथि सीमा फ़िल्टर का उपयोग करता है, चयनित तिथि सीमा नियंत्रक को वापस भेज दी जाती है जब उपयोगकर्ता 'फ़िल्टर' एक्शन लिंक पर क्लिक करता है और नियंत्रक ' फ़िल्टर किए गए मॉडल डेटा के साथ इंडेक्स 'दृश्य।देखने के लिए नियंत्रक एमवीसी/सी #

देखें

@Html.ActionLink("Filter", "FilterDateRange", new { from = Url.Encode(Model.FromDate.ToString()), to = Url.Encode(Model.ToDate.ToString()) }, null) 

नियंत्रक

public ActionResult FilterDateRange(string from, string to) 
{ 
    var fromDate = DateTime.Parse(HttpUtility.UrlDecode(from)); 
    var toDate = DateTime.Parse(HttpUtility.UrlDecode(to)); 

    //do stuffs 

    return View("Index", statsPages); 
} 

मेरा प्रश्न है, वहाँ यह करने के लिए एक और अधिक सुरुचिपूर्ण तरीका है? वर्तमान में डेट मान को दृश्य में एन्कोड किया जा रहा है और फिर नियंत्रक में डीकोड किया गया है, तो मैं स्ट्रिंग के बजाए दिनांक नियंत्रक के भीतर विधि लेता हूं, ऐसा लगता है कि यह थोड़ा हैकी जैसा लगता है।

धन्यवाद।

उत्तर

4

क्यों डेटटाइम पैरामीटर का उपयोग न करें?

@Html.ActionLink("Filter", "FilterDateRange", new { from = Model.FromDate, to = Model.ToDate }, null) 

public ActionResult FilterDateRange(DateTime from, DateTime to) 
{ 
    var fromDate = from; 
    var toDate = to; 

    //do stuffs 

    return View("Index", statsPages); 
} 

आप मॉडल बांधने की मशीन अपने काम करते हैं, तो आप एन्कोडिंग, डिकोडिंग, या पार्स बारे में चिंता करने की ज़रूरत नहीं होगी।

+0

हां, यह धन्यवाद काम करता है। मुझे लगता है कि आप कच्चे दिनांक के समय को वापस नहीं कर सकते क्योंकि यह यूआरएल को दूषित कर देगा, लेकिन ऐसा लगता है कि मॉडल बाइंडर ने इसे संभाला है जैसा आपने कहा है। – RobJohnson

संबंधित मुद्दे