में रीडोनली टेक्स्टबॉक्स कैसे बनाएं, एएसपी.नेट एमवीसी 3 में रीडोनली टेक्स्टबॉक्स कैसे बनाएं, रेजर व्यू इंजन के साथ? क्या ऐसा करने के लिए कोई HTMLHelper विधि उपलब्ध है?एएसपी.नेट एमवीसी 3 रेजर
ऐसा कुछ?
@Html.ReadOnlyTextBoxFor(m => m.userCode)
में रीडोनली टेक्स्टबॉक्स कैसे बनाएं, एएसपी.नेट एमवीसी 3 में रीडोनली टेक्स्टबॉक्स कैसे बनाएं, रेजर व्यू इंजन के साथ? क्या ऐसा करने के लिए कोई HTMLHelper विधि उपलब्ध है?एएसपी.नेट एमवीसी 3 रेजर
ऐसा कुछ?
@Html.ReadOnlyTextBoxFor(m => m.userCode)
@Html.TextBoxFor(m => m.userCode, new { @readonly="readonly" })
आप इस के लिए एक HTML हेल्पर बनाने के लिए स्वागत है, लेकिन यह केवल किसी अन्य की तरह सिर्फ एक HTML विशेषता है। क्या आप एक टेक्स्ट बॉक्स के लिए एक HTML सहायक बनायेंगे जिसमें अन्य विशेषताएं हों?
अद्यतन: अब डिफ़ॉल्ट संपादक टेम्पलेट्स में HTML विशेषताओं को जोड़ना बहुत आसान है। बजाय ऐसा करने का अर्थ है:
@Html.TextBoxFor(m => m.userCode, new { @readonly="readonly" })
आप बस कर सकते हैं:
@Html.EditorFor(m => m.userCode, new { htmlAttributes = new { @readonly="readonly" } })
लाभ: आप टेम्पलेट्स के लिए .TextBoxFor
आदि कॉल करने के लिए नहीं है। बस .EditorFor
पर कॉल करें।
@ शार्क समाधान सही ढंग से काम करता है और यह सरल और उपयोगी है, मेरे समाधान (कि मैं हमेशा का उपयोग करें) इस एक एक editor-template
बनाएं कि हैंडल readonly
विशेषता सकता है जबकि:
~/Views/Shared/
EditorTemplates
नाम के एक उस्तरा PartialView
नामित बनाएं String.cshtml
इस कोड के साथ String.cshtml
भरें:
@if(ViewData.ModelMetadata.IsReadOnly) {
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue,
new { @class = "text-box single-line readonly", @readonly = "readonly", disabled = "disabled" })
} else {
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue,
new { @class = "text-box single-line" })
}
मॉडल कक्षा में, गुण है जो आप readonly
होना चाहता हूँ पर [ReadOnly(true)]
विशेषता डाल दिया।
उदा। ,
@Html.EditorFor(m => m.EditablePropertyExample)
@Html.EditorFor(m => m.ReadOnlyPropertyExample)
पहले एक renders एक सामान्य text-box
इस तरह::
public class Model {
// [your-annotations-here]
public string EditablePropertyExample { get; set; }
// [your-annotations-here]
[ReadOnly(true)]
public string ReadOnlyPropertyExample { get; set; }
}
अब आप रेजर के डिफ़ॉल्ट वाक्य रचना बस का उपयोग कर सकते
<input class="text-box single-line" id="field-id" name="field-name" />
और दूसरा, को प्रदर्शित करेगा;
<input readonly="readonly" disabled="disabled" class="text-box single-line readonly" id="field-id" name="field-name" />
आप डेटा के किसी भी प्रकार के (DateTime
, DateTimeOffset
, DataType.Text
, DataType.MultilineText
और इसी तरह) के लिए इस समाधान का उपयोग कर सकते हैं। बस editor-template
बनाएं।
+1 क्योंकि आपने "ViewData.ModelMetadata.IsReadOnly" का उपयोग किया था। मैं उम्मीद कर रहा था कि एमवीसी इन चीजों को संस्करण 4 में ध्यान में रखेगा। – cleftheris
@cleftheris अच्छी तरह से हम अब संस्करण 5 में हैं, और एमवीसी अभी भी उन्हें नहीं ले गया है;) –
बहुत उपयोगी - धन्यवाद :) – Nildarar
TextBoxFor साथ समाधान ठीक है, लेकिन आप की तरह क्षेत्र देखना चाहता हूँ नहीं है अगर Editbox स्टाइलिश (यह थोड़ा उपयोगकर्ता के लिए उलझन में हो सकता है) का पालन बदलाव करना शामिल है:
1. पहले उस्तरा कोड बदलता है
<div class="editor-field">
@Html.EditorFor(model => model.Text)
@Html.ValidationMessageFor(model => model.Text)
</div>
2. परिवर्तन के बाद
<!-- new div display-field (after div editor-label) -->
<div class="display-field">
@Html.DisplayFor(model => model.Text)
</div>
<div class="editor-field">
<!-- change to HiddenFor in existing div editor-field -->
@Html.HiddenFor(model => model.Text)
@Html.ValidationMessageFor(model => model.Text)
</div>
आम तौर पर यह समाधान संपादन के खिलाफ दायर किया गया है लेकिन इसका मूल्य दिखाता है। कोड-बैक संशोधनों की कोई आवश्यकता नहीं है।
मुझे लगता है कि क्लास एडिटर-फील्ड और डिस्प्ले-फील्ड के लिए सीएसएस रखना वास्तव में सहायक हो सकता है। – DOK
द्वारा पिछले जवाब देने के लिए क्रेडिट के साथ
यह मैं ASP.NET कोर में samething किया है है
<input asp-for="DisabledField" disabled="disabled" />
<input asp-for="DisabledField" class="hidden" />
पहला इनपुट केवल पढ़ने के लिए है और दूसरा एक गुजरता नियंत्रक के लिए मूल्य और छुपा हुआ है। उम्मीद है कि यह एएसपी.Net कोर के साथ काम करने वाले किसी के लिए उपयोगी होगा।
@Html.TextBox("Recivers", Model, new { @class = "form-control", style = "width: 300px", @readonly = "readonly" })
@Html.TextBoxFor(model => model.IsActive, new { readonly= "readonly" })
इस पाठ बॉक्स के लिए ठीक है। हालांकि, अगर आप checkbox
के लिए भी ऐसा ही करने की कोशिश तो अगर आप इसे
@Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })
का उपयोग कर इस का उपयोग करके देखें लेकिन disable
का प्रयोग नहीं करते क्योंकि अक्षम हमेशा सर्वर या तो उस में जांच की गई या अनियंत्रित करने के लिए झूठी डिफ़ॉल्ट मान भेज राज्य। और readonly
चेकबॉक्स और radio button
के लिए काम नहीं करता है। readonly
केवल text
फ़ील्ड के लिए काम करता है।
@Shyju क्षमा करें, मुझे 'readonly' संपत्ति का' @ 'उपसर्ग याद आ रहा था। मेरा संपादन देखें। –
भविष्य में, यदि आपको गतिशील ऑब्जेक्ट तर्क में गुण जोड़ने वाली किसी भी प्रकार की त्रुटियां मिलती हैं तो आप उन्हें '@' के साथ उपसर्ग कर सकते हैं। आप आमतौर पर केवल उन कीवर्ड के साथ देखेंगे जो HTML विशेषताओं से मेल खाते हैं (जैसे रीडोनली, क्लास इत्यादि) –
@ ब्रैड क्रिस्टी: नहीं; आपको ** सी # ** कीवर्ड से मेल खाने वाले विशेषताओं का उपयोग करने के लिए केवल '@' की आवश्यकता है। – SLaks