मुद्रा स्वरूपण एमवीसी

मैं मुद्रा स्वरूपण करने के लिए एक HTML.EditorFor टेक्स्टबॉक्स को प्रारूपित करने का प्रयास कर रहा हूं, मैं इसे इस धागे से दूर करने की कोशिश कर रहा हूं स्ट्रिंग। टेक्स्टबॉक्स पर मुद्रा के लिए फॉर्मेट करें । हालांकि, मेरा टेक्स्ट अभी भी 0.00 रूपए के रूप में दिखाई देता है जिसमें कोई मुद्रा स्वरूपण नहीं है।

<div class="editor-field">
        @Html.EditorFor(model => model.Project.GoalAmount, new { @class = "editor-     field", Value = String.Format("{0:C}", Model.Project.GoalAmount) })

There is the code for what I am doing, and here is the html for that field in the website itself contained within the editor-field div of course.

<input class="text-box single-line valid" data-val="true" 
 data-val-number="The field Goal Amount must be a number." 
 data-val-required="The Goal Amount field is required."
 id="Project_GoalAmount" name="Project.GoalAmount" type="text" value="0.00">

Any help would be appreciated, thanks!

0
जोड़ा संपादित
विचारों: 1

1 उत्तर

आप [DisplayFormat] विशेषता के साथ अपने GoalAmount मॉडल प्रॉपर्टी को सजाने के लिए सजाने सकते हैं:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")]
public decimal GoalAmount { get; set; }

और दृश्य में बस:

@Html.EditorFor(model => model.Project.GoalAmount)

संपादक के दूसरे तर्क के लिए सहायक जो कुछ भी आपको लगता है वह बिल्कुल नहीं करता है। यह आपको संपादक टेम्पलेट में अतिरिक्त व्यूडेटा पास करने की अनुमति देता है, यह HTMLAttributes नहीं है।

एक और संभावना मुद्रा के लिए कस्टम संपादक टेम्पलेट लिखना है ( ~/Views/Shared/EditorTemplates/Currency.cshtml ):

@Html.TextBox(
    "", 
    string.Format("{0:c}", ViewData.Model),
    new { @class = "text-box single-line" }
)

और फिर:

@Html.EditorFor(model => model.Project.GoalAmount, "Currency")

या [UIHint] का उपयोग करें:

[UIHint("Currency")]
public decimal GoalAmount { get; set; }

और फिर:

@Html.EditorFor(model => model.Project.GoalAmount)
0
जोड़ा
सही ओवरलोड को संतुष्ट करने के लिए मुझे TextBox के लिए इसे परिवर्तित या पार्स करने के बाद viewData.Model को दशमलव पर डालना पड़ा। string.Format ("{0: c}", (दशमलव) दशमलव। पर्स (मॉडल)))
जोड़ा लेखक The Muffin Man, स्रोत
मुझे शुरुआत में @model IFormattable जोड़ने की आवश्यकता थी। इन दिनों भी हम UIHint के बजाय टाइपएफ़ <�कोड> [डेटाटाइप (डेटाटाइप.कुरेंसी)] लिख सकते हैं।
जोड़ा लेखक Christian Gollhardt, स्रोत
पेंस के बिना मुद्रा (पाउंड) के लिए प्रारूप स्ट्रिंग क्या है? मुझे अभी तक यह प्रतीत नहीं होता है। धन्यवाद।
जोड़ा लेखक Doomsknight, स्रोत
@DarinDimitrov मैं अब है! ;) धन्यवाद।
जोड़ा लेखक Doomsknight, स्रोत
महान काम किया, धन्यवाद! :)
जोड़ा लेखक Ryan J, स्रोत
इस सवाल को देखने में खुशी हुई है कि कुछ लोगों ने मदद की है!
जोड़ा लेखक Ryan J, स्रोत
इससे मुझे मदद मिली लेकिन मैंने ApplyFormatInEditMode = true को ApplyFormatInEditMode = false पर सेट किया - यह इनपुट का सत्यापन संदेश एक संख्या होना चाहिए, जब मुद्रा प्रतीक संपादन टेक्स्ट बॉक्स में मौजूद होता है। - मुझे लगता है कि उपयोगकर्ता को पता होना चाहिए कि वह किस मुद्रा के साथ काम कर रहा है - किसी भी तरह से यदि इसका एकाधिक मुद्रा प्रबंधन, मुद्रा चिह्न मूल्य के साथ संग्रहीत किया जाना चाहिए, अन्यथा यह कैसे पता चलेगा कि राशि पाउंड, डॉलर या यूरो में है या नहीं डेटाबेस।
जोड़ा लेखक ppumkin, स्रोत
@Doomsknight, क्या आपने "{0: C0}" की कोशिश की है?
जोड़ा लेखक Darin Dimitrov, स्रोत
इस परिदृश्य के लिए एक कस्टम बाइंडर बनाने के लिए भारी हाथ लगता है - अगर मैं इस परिदृश्य का समर्थन करना चाहता हूं तो मैं वही करूँगा। लेकिन मैं इसे इस तरह से लिखूंगा ताकि यह DisplayFormat विशेषता का उपयोग करे जिसके साथ दृश्य मॉडल संपत्ति को सजाया गया था और प्रदर्शित करने और बाध्यकारी के लिए उसी प्रारूप का पुन: उपयोग किया गया था।
जोड़ा लेखक Darin Dimitrov, स्रोत
फ़ॉर्म को पोस्ट करते समय मॉडल को बाइंडिंग के साथ स्वरूपित मुद्रा फ़ील्ड के कारण समस्या के आसपास आप कैसे पहुंचते हैं? चूंकि फॉर्म फ़ील्ड में दशमलव के लिए अमान्य वर्ण हैं, इसलिए बाध्यकारी फॉर्म पोस्ट होने पर मान को भरता नहीं है। इस परिदृश्य के लिए एक कस्टम बांधने की मशीन बनाने के लिए भारी हाथ लगता है ...
जोड़ा लेखक Mark, स्रोत
मेरी तरफ से धन्यवाद .. यह काम करता है ..
जोड़ा लेखक Janty, स्रोत