2011-02-07 13 views
197

मेरे पास एएसपी.नेट एमवीसी 3 ऐप है और मैंने भी समाचार जोड़ने के लिए फॉर्म बनाया है। जब VS2010 ने डिफ़ॉल्ट दृश्य बनाया है तो मेरे पास स्ट्रिंग डेटा के लिए केवल टेक्स्ट इनपुट हैं, लेकिन मैं न्यूज टेक्स्ट के लिए टेक्स्टरेरा चाहता हूं। मैं इसे रेजर सिंटैक्स के साथ कैसे कर सकता हूं। इस तरहएएसपी.नेट एमवीसी 3 - @ एचटीएमएल.एडिटर के साथ टेक्स्टरेरा

पाठ इनपुट देखो:

@Html.EditorFor(model => model.Text) 
+0

संबंधित, यह आलेख देखें (http://stackoverflow.com/a/10696647/419956) उस संपादक टेम्पलेट को कस्टमाइज़ करने के तरीके के बारे में एक और प्रश्न के लिए। – Jeroen

उत्तर

352

आप इस तरह आपके विचार मॉडल पर [DataType] विशेषता इस्तेमाल कर सकते हैं:

public class MyViewModel 
{ 
    [DataType(DataType.MultilineText)] 
    public string Text { get; set; } 
} 

और फिर आप एक नियंत्रक हो सकता है:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new MyViewModel()); 
    } 
} 

और एक दृश्य जो आप चाहते हैं:

@model AppName.Models.MyViewModel 
@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(x => x.Text) 
    <input type="submit" value="OK" /> 
} 
+6

मैं जो कुछ खोज रहा था, उतना ही, लेकिन अगर मुझे पंक्तियों और कोल्स HTML विशेषताओं को निर्दिष्ट करने की आवश्यकता है तो क्या होगा? – Jason

+3

मुझे अभी भी स्रोत कोड पर [वर्ग = "टेक्स्ट-बॉक्स सिंगल-लाइन"] मिल रहा है :( – Stavros

+6

बेहद जानकार और अभी भी इसे जितना सरल हो रहा है उतना सरल और समझाता है। चरण @ चरण डेरिट्रोव। –

94
@Html.TextAreaFor(model => model.Text) 
+6

मुझे इस विधि को बेहतर पसंद है क्योंकि यहां लोकप्रिय उत्तर में डेटाबेस मॉडल को संशोधित करना शामिल है, जिसका अर्थ है कि एंटीटीफ्रेमवर्क का उपयोग करते समय आपको अंतर्निहित डेटाबेस को छोड़ना और फिर से बनाना होगा। –

+5

वह डेटाटाइप एनोटेशन एंटिटी फ्रेमवर्क में रीफ्रेश को मजबूर नहीं करता है। – Tallmaris

+9

@Ciaran: इस कथन को घंटी बजानी चाहिए। UI को संशोधित करने के लिए डेटाबेस परत को बदलने की कोई आवश्यकता नहीं होनी चाहिए। एक प्रस्तुति ऑब्जेक्ट होना चाहिए, जो डेटाबेस ऑब्जेक्ट के लिए मैपर है। कभी भी यूआई में डेटाबेस ऑब्जेक्ट का उपयोग न करें –

120

किसी विशेषताएं जोड़ना के बारे में पूछा (विशेष रूप से, 'पंक्तियों' और 'कॉलम')। यदि आप रेजर का उपयोग कर रहे हैं, तो आप बस यह कर सकते हैं:

@Html.TextAreaFor(model => model.Text, new { cols = 35, @rows = 3 }) 

यह मेरे लिए काम करता है। '@' का उपयोग कीवर्ड से बचने के लिए किया जाता है ताकि उन्हें चर/गुण के रूप में माना जा सके।

+0

वास्तव में - यदि आप जानते हैं कि आप कोल्स/पंक्तियों के साथ एक टेक्स्ट क्षेत्र चाहते हैं, तो TextAreaFor के बजाय EditorFor का उपयोग करने का कोई कारण नहीं है। किसी के पास कोई कारण है कि आपको अभी भी संपादक का उपयोग करने की आवश्यकता होगी और पता है कि आपको कॉल/पंक्ति निर्दिष्ट करने की आवश्यकता है? –

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