2010-03-29 11 views
49

मेरे पास Html.TextBoxFor अभिव्यक्ति के साथ निम्न टैग है और मैं सामग्री को केवल पढ़ने के लिए चाहता हूं, क्या यह संभव है?क्या मैं HTML.TextBoxFor का उपयोग करते समय पाठ बॉक्स को केवल पढ़ने के लिए सेट कर सकता हूं?

<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action)%> 
+0

> [यहाँ n है आप देख सकते हैं। एमवीसी में केवल टेक्स्टबॉक्स को पढ़ने के लिए कैसे करें] (http://www.codeshower.blogspot.in/2012/09/mvc-how-to-create-readonly-textbox-in.html) –

उत्तर

33

एक टिप्पणी में @ 1c1cle के सुझाव के अनुसार नेट के आधुनिक संस्करणों के लिए अपडेट किया गया:

<%= Html.TextBoxFor(model => Model.SomeFieldName, new {{"readonly", "true"}}) %> 

एहसास है कि यह एक "सुरक्षित" तरीका यह है के रूप में किसी को बदलने के लिए जावास्क्रिप्ट इंजेक्षन कर सकते हैं नहीं है इस।

कुछ पता होना चाहिए कि यदि आप readonly मान false पर सेट करते हैं, तो आपको वास्तव में व्यवहार में कोई बदलाव नहीं दिखाई देगा! इसलिए यदि आपको एक चर के आधार पर इसे ड्राइव करने की आवश्यकता है, तो आप उस चर को बस वहां प्लग नहीं कर सकते हैं। । इसके बजाय आप सशर्त तर्क का उपयोग करने के लिए बस में है कि readonly विशेषता पारित नहीं करने की आवश्यकता है

यहां ऐसा करने के लिए एक अपरीक्षित सुझाव है (इस में कोई समस्या है, तो आप एक अगर/किसी और हमेशा कर सकते हैं):

<%= Html.TextBoxFor(model => Model.SomeFieldName, shouldBeReadOnlyBoolean ? new {{"readonly", "true"}} : null) %> 
+3

नया शब्दकोश () {{"readonly", "false"}} और नया शब्दकोश (पर गतिशील रूप से @readonly = false या true असाइन करना चाहता हूं।) {{"केवल पढ़ने", "कुछ भी"}} एक ही परिणाम प्रदान करते हैं। – 1c1cle

7
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new {readonly=true})%> 
1

@Hunter का उदाहरण का उपयोग करना, नए {} .. भाग में, केवल पढ़ने के लिए = सच जोड़ने के लिए, मुझे लगता है कि काम करेंगे।

+1

नहीं, यह एक त्रुटि देता है: अमान्य अभिव्यक्ति शब्द 'readonly' –

102
<%= Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @readonly = true })%> 
+11

यह सही है, लेकिन @ readonly = false मेरे लिए एक ही परिणाम प्रदान करता है। इस प्रकार, यह केवल पढ़ने का मूल्य है जो कार्यक्षमता का निर्णय लेता है, लेकिन विशेषता का अस्तित्व स्वयं ही होता है। – 1c1cle

+3

इस पर काबू पाने के लिए कोई रास्ता है? असल में मैं कुछ अन्य चर (बेवकूफ आवश्यकताओं) – rank1

4
<%: Html.TextBoxFor(m => Model.Events.Subscribed[i].Action, new { @autocomplete = "off", @readonly=true})%> 

इस तरह आप कई संपत्तियां हैं

3

मेरे लिए यह काम सेट किया गया है ...

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = "readonly" }) 
0

वास्तव में मस्तिष्क मेन्स के जवाब लगभग सही है:

@Html.TextBoxFor(model => model.RIF, new { value = @Model.RIF, @readonly = true }) 
0

मामले में आप

@Html.TextBoxFor(m => m.Birthday, new Dictionary<string, object>() { {"readonly", "true"}, {"class", "commonField"} }) 

उपयोग कर सकते हैं आप अपने कस्टम वर्ग लागू करने के लिए है, तो कहाँ

commonField हैं है सीएसएस वर्ग

और जन्मदिन सह स्ट्रिंग क्षेत्र है कि आप शायद jQuery Datapicker तारीख :)

<script> 
      $(function() { 
       $("#Birthday").datepicker({ 

       }); 
      }); 
    </script> 

एक वास्तविक जीवन उदाहरण है कि रखने के लिए उपयोग कर सकते हैं हो सकता है uld।

0

या तो सही या गलत में केवल पढ़ने योग्य विशेषता को सेट करने से अधिकांश ब्राउज़रों में काम नहीं किया जा रहा है, मैंने इसे नीचे किया है, जब पृष्ठ का मोड "पुनः लोड" होता है, तो मैंने "केवल पढ़ने" विशेषता नहीं दी है।

@if(Model.Mode.Equals("edit")){ 
@Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @readonly = moduleEditModel.Content.ReadOnly, @style = "width:99%; height:360px;" }) 
} 
@if (Model.Mode.Equals("reload")){ 
@Html.TextAreaFor(model => Model.Content.Data, new { id = "modEditor", @style = "width:99%; height:360px;" })} 
1

एक अन्य संभावना:

<%= Html.TextBoxFor(model => Model.SomeFieldName, new Dictionary<string, object>(){{"disabled", "true"}}) %> 
8

बनाने के यह केवल पढ़ने के लिए

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @readonly="true"}) 

diable करने के लिए

@Html.TextBoxFor(m=> m.Total, new {@class ="form-control", @disabled="true"}) 
27

निम्नलिखित का उपयोग करें:

+०१२३५१६४१०
@Html.TextBoxFor(m => m.Whatever, new {@readonly = "readonly"}) 

यदि आप इसे कक्षा निर्दिष्ट करना चाहते हैं तो आप इसे @class = "" संपत्ति जोड़कर वैसे ही कर सकते हैं। उम्मीद है कि यह मदद करता है :)

+0

यह मेरे लिए काम किया। – Orion

4

निम्नलिखित स्निपेट मेरे लिए काम किया।

@Html.TextBoxFor(m => m.Crown, new { id = "", @style = "padding-left:5px", @readonly = "true" }) 
0
@Html.TextBoxFor(model => model.IdUsuario, new { @Value = "" + User.Identity.GetUserId() + "", @disabled = "true" }) 

@disabled = "true" 

काम बहुत अच्छी तरह से

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

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