में मैं MVC के लिए प्रदर्शन और EditorTemplates के बारे में इस पोस्ट पाया प्रदर्शन टेम्पलेट का उपयोग कर मुद्रा:प्रारूपण MVC
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
यह एक प्रदर्शन टेम्पलेट बनाता है आसानी से एक दशमलव मुद्रा पर हस्ताक्षर के साथ स्वरूपित प्रदर्शित करने के लिए।
मॉडल उदाहरण में प्रयुक्त:
public class TestModel
{
public decimal Money { get; set; }
}
प्रदर्शन टेम्पलेट:
दृश्य/साझा/DisplayTemplates/decimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
मेरी वेबसाइट में मैं एक सहायक है कक्षा से स्वरूपित मुद्रा स्ट्रिंग को पुनर्प्राप्त करने के लिए एक विधि के साथ कक्षा, इसलिए मैं उपरोक्त को कुछ इस प्रकार से बदल दूंगा:
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
और अंत में दृश्य जहां हम स्वरूपित मुद्रा देखना चाहते हैं:
@model TestModel
@Html.DisplayFor(e => e.Money)
आउटपुट:
<span class="currency">$3.50</span>
मैं इस बिना किसी समस्या के लागू कर सकते हैं। लेकिन निश्चित रूप से मेरे पास अलग-अलग विचार हैं जहां मैं एक स्वरूपित मुद्रा देखना चाहता हूं। लेकिन कुछ मामलों में मैं मुद्रा चिह्न दिखाना नहीं चाहता हूं।
मेरा प्रश्न यह है कि कोड में बहुत अधिक मात्रा के बिना मुझे इस छोटे बदलाव को कैसे कार्यान्वित करना चाहिए।
मैं यह करने के लिए अपने प्रदर्शन टेम्पलेट बदल दिया है:
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
बेशक
मैं भी इस अतिरिक्त विशेषता स्वीकार करने के लिए GetCurrencyString विधि के लिए बदल दिया है
यहाँ मेरे वर्तमान कार्यान्वयन है। तो वास्तव में मैं सब कुछ काम करता है जैसे कि यह काम करना चाहिए
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
:
मेरी नजर में मैं अब भी इस विशेषता प्रदान करने के लिए है। लेकिन किसी भी तरह से मुझे यह सोल्ल्यूशन पसंद नहीं है जो दृश्य को अधिक जटिल बनाता है।
मेरा प्रश्न: क्या ऐसा कुछ करने के लिए कोई और तरीका है? या संभवतः मेरे वर्तमान सोल्शन को अनुकूलित करने के लिए कोई सलाह?
धन्यवाद!
सुझाव के लिए धन्यवाद। क्या इसका मतलब है कि मुझे दृश्य में व्यूडाटा में संपत्ति को हमेशा सेट करने की आवश्यकता है? के बाद से मुझे लगता है मैं एक दृश्य में दिखाना चाहते हैं एकाधिक कीमतों लेकिन ऐसा नहीं किया है उन सभी को एक मुद्रा पर हस्ताक्षर दिखाना चाहिए। जब मैं प्रदर्शन टेम्पलेट्स के बारे में पढ़ना शुरू किया मैं वे सब कुछ बहुत आसान है और क्लीनर होगा सोचा है, लेकिन यह देखने के लिए की तरह वे मेरे :( – ThdK
मूर्ख बनाया आप 'controller' में' ViewData' सेट के साथ-साथ कर सकते हैं। – haim770
हाँ मुझे पता है, लेकिन फिर यह हर मुद्रा मैं वर्तमान दृश्य पर स्वरूपित करना चाहते हैं के लिए एक ही मूल्य होता है। मैं सबसे लाइनों के लिए मैं एक मुद्रा पर हस्ताक्षर नहीं करना चाहती एक viewmodel। प्रॉपर्टीज़ में से एक एक दशमलव मूल्य है। टोकरी में एक लाइन का प्रतिनिधित्व किया है, के लिए उप-योग और कुल लाइनों, मैं मुद्रा पर हस्ताक्षर दिखाया जाना चाहेंगे। हालांकि दोनों लाइनों एक ही वस्तु (viewmodel) का उपयोग उनके मूल्यों स्टोर करने के लिए। – ThdK