2012-11-18 14 views
9

मेरे पास एक नियंत्रक है, जो क्रिया PartialViewResult देता है और इसके साथ देखता है। परीक्षण के लिए मैं वर्तमान दिनांक समय (कार्रवाई में) आउटपुट के लिए, और देखता हूं कि मैं जांचता हूं कि यह शून्य है या नहीं, इसलिए मुझे पता है कि मुझे क्या मिला।Html.Partial और Html.Action विधियों के बीच क्या अंतर है?

जब मैं Html.Action के साथ किसी अन्य दृश्य में "एम्बेड" करने का प्रयास करता हूं तो मुझे वर्तमान डेटाटाइम मिलता है, इसलिए मेरी क्रिया को बुलाया जाता है।

लेकिन जब मैं Html.Partial का उपयोग करता हूं तो दृश्य शून्य के साथ प्रस्तुत किया जाता है, मेरी क्रिया विधि को नहीं कहा जाता है। इसके अलावा, दो ब्रेकपॉइंट्स और डीबगर भी पुष्टि करते हैं, बाद के मामले में मेरी क्रिया विधि को नहीं कहा जाता है।

कार्रवाई विधि:

public PartialViewResult Test() 
{ 
    return PartialView(DateTime.Now); 
} 

(आंशिक) दृश्य:

@model DateTime? 

<p>@(Model ?? DateTime.MinValue)</p> 

और मुख्य दृश्य से फोन या तो @Html.Action("Test") या @Html.Partial("Test") है।

+0

क्या आप हमें "मुख्य दृश्य" दिखा सकते हैं – gdoron

उत्तर

23

एचटीएमएल.एक्शन() आपकी क्रिया विधि को कॉल करेगा, लेकिन HTML.Partial() नहीं होगा। Html.Partial() केवल आपके आंशिक दृश्य को प्रस्तुत करता है, और यदि आपके पास कुछ स्थिर सामग्री है, या यदि आप पहले से ही डेटा डेटा लोड कर चुके हैं तो उपयोगी है।

Html.Partial("PartialName", Model.PartialData); 

आपके मॉडल डेटा के साथ पार्टियलनाम दृश्य प्रस्तुत करेगा। सर्वर पर कोई अतिरिक्त अनुरोध किए बिना, स्वच्छ वर्गों में विचारों को तोड़ने का यह एक शानदार तरीका है।

Html.Action("Test") 

आपकी टेस्ट कार्रवाई को कॉल करेगा, और परिणाम प्रस्तुत करेगा।

यही कारण है कि आप पूर्ण दिनांक समय देख रहे हैं। Html.Action() वास्तव में कार्रवाई को कॉल कर रहा है, डेटटाइम की गणना कर रहा है, और दृश्य प्रस्तुत कर रहा है, जबकि Html.Partial() केवल दृश्य प्रस्तुत कर रहा है।

+0

बहुत ही जानकारीपूर्ण उत्तर के लिए धन्यवाद! – greenoldman

+1

क्या वह '@ एचटीएमएल। पार्टियल (" टेस्ट ", नया {डेटटाइम.अब} '? –

+0

हाँ कह सकता है, आप भी ऐसा कर सकते हैं। आप नया {} भी छोड़ सकते हैं, क्योंकि डेटटाइम भी मान्य है मॉडल। मुझे लगता है कि यह प्रश्न एचटीएमएल.एक्शन और एचटीएमएल के बीच के अंतर के बारे में अधिक व्यापक रूप से था। हालांकि, ओपी ने केवल दिनांक समय का उल्लेख किया है। अब परीक्षण के लिए। – mfanto

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