2009-08-08 7 views
5

मैं asp.net साइट में MVCक्या asp.net MVC के में "शाब्दिक" टैग के बराबर है

asp.NET करने के लिए कई जगहों पर वे जहां देखते हैं "asp.net से एक वेबसाइट की ओर पलायन कर रहा हूँ शाब्दिक "टैग और सर्वर एचटीएमएल का एक समूह उत्पन्न करता है और शाब्दिक टैग में में चिपक जाता है।

asp.net mvc में इसे करने के बराबर क्या है। मैं ViewData में इस धक्का चाहिए?

उत्तर

10

बराबर ही बुरा डिजाइन विकल्प मूल निर्माता बना नहीं है।

लेकिन, चूंकि हम असली दुनिया में रहते हैं, इसलिए आप किसी विशेष पृष्ठ के लिए प्रेजेंटेशन मॉडल में अपने स्ट्रिंग्स-जो-इन-एचटीएमएल को फेंक देंगे और फिर प्रतिक्रिया स्ट्रीम में लिखेंगे।

अपने मॉडल में:

public class MyPageModel 
{ 
    public string HolyCrapItsHtml {get;set;} 
} 

अपने नियंत्रक में:

public ActionResult MyPage() 
{ 
    return View(new MyPageModel 
     {HolyCrapItsHtml = OldCode.GetHtmlICantBelieveIt()}); 
} 

और अपने पृष्ठ में:

<div> 
    In the olden days, we'd concatenate our webpages together from strings like: 
    <%= Model.HolyCrapItsHtml %> 
</div> 
+0

धन्यवाद। आप एक वैकल्पिक दृष्टिकोण है कि मैं करने के लिए इस refactor करने का लक्ष्य कर सकते हैं की पेशकश कर सकते हैं? – leora

+0

अनिवार्य रूप से वही बात, इसके अलावा अपने एचटीएमएल को एक साथ जोड़ने के बजाय (इस उदाहरण के साथ) OldCode.GethtmlICantBelieveIt, अपने नियंत्रक में आप अपना डेटा इकट्ठा करते हैं जो उस HTML की सामग्री को बनाता है, इसे मॉडल के भीतर रखता है, और अपने सभी HTML को आपके दृश्य में प्रस्तुत करता है अपने मॉडल की सामग्री का उपयोग कर। एमवीसी शोध करने में कुछ मिनट और आपको इसका लटका मिल जाएगा। – Will

3

मैं एक ही समस्या थी। MyPageModel से परेशान न हों, बस व्यूडाटा के साथ चिपके रहें लेकिन कोलन के बजाए बराबर का उपयोग करें।

<%= ViewData("SomeVarName") %> 
1

आप रेजर का उपयोग कर रहे हैं, तो आप अगर दृढ़ता से टाइप सहायकों

@Model.YourVarName 

आप दृढ़ता से टाइप दृश्य मॉडल के साथ में काम कर रहे हैं का उपयोग नहीं कर निम्न कार्य हैं, तो आप उपयोग कर सकते हैं ValueFor() सहायक

@Html.ValueFor(m => m.YourVarName) 

आप बस कुछ शाब्दिक है, तो आप उन्हें ViewData में डाल सकता है, लेकिन आप एक सच्चे MVC मॉडल का अनुसरण कर रहे हैं तो आप इसी गुणों के साथ दृश्य के लिए एक मॉडल बनाना चाहिए। यह देखते हुए कि आप मौजूदा एएसपी.नेट पेज से पोर्ट कर रहे हैं, प्रत्येक नए व्यू/पेज के लिए एक नया मॉडल स्थापित करने में बहुत अधिक ओवी ओवरहेड हो सकता है, इस मामले में इसे व्यूडाटा में चिपकाएं। इस प्रतिक्रिया के लिए

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