मैं ASP.NET MVC में अक्षम इनपुट कैसे सबमिट करूं?
मैं ASP.NET MVC में अक्षम इनपुट कैसे सबमिट करूं?
जवाबों:
क्या आप readonly="readonly"
इसके स्थान पर फ़ील्ड नहीं बना सकते disabled="disabled"
? उपयोगकर्ता द्वारा गैर-संपादन योग्य होते हुए भी सर्वर पर आसानी से फ़ील्ड मान सबमिट किया जाएगा। एक SELECT
टैग हालांकि एक अपवाद है।
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>
कर रहा हूं : मैं इसे कैसे ग्रे कर सकता हूं, इसलिए यह नेत्रहीन दिखता है कि यह संपादन योग्य नहीं है। बेहतर अभी तक हम LabelFor के समान कुछ का उपयोग कर सकते हैं, मैंने LabelFor की कोशिश की, लेकिन यह केवल DisplayName हो जाता है ....
type="checkbox"
इनपुट के लिए भी काम नहीं करता है
सभी को धन्यवाद:
जिस तरह से मैंने इसे हल किया:
document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";
ध्यान दें:
मुझे यह जानकारी उत्तर पर मिली लेकिन मैं संपादित हो गया।
textBox.Attributes.Add("readonly", "readonly");
और स्पष्टीकरण लिंक में है
$("#textBoxId").css("color", "#c0c0c0")
।
@ppumkin ने इस उत्तर पर अपनी टिप्पणी में इसका उल्लेख किया था लेकिन मैं इसे उजागर करना चाहता था क्योंकि मैं एक विकलांग से डेटा जमा करने पर अन्य संसाधनों को खोजने में असमर्थ था <select>
। मेरा यह भी मानना है कि यह सवाल के लिए प्रासंगिक है क्योंकि चयन <input>
एस नहीं हैं लेकिन वे "इनपुट" हैं।
बस विकलांग चयन के लिए एक छिपे हुए क्षेत्र को शामिल करें और इसके सभी क्रमबद्ध।
उदाहरण:
@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@
सावधानी: यह एक ही आईडी के साथ पृष्ठ पर दो टैग लगाएगा, जो वास्तव में वैध HTML नहीं है और जावास्क्रिप्ट के साथ सिरदर्द पैदा कर सकता है। मेरे लिए, मेरे पास इसके html द्वारा ड्रॉपडाउन का मान सेट करने के लिए जावास्क्रिप्ट है id
, और यदि आप पहले छिपे हुए फ़ील्ड को डालते हैं, तो जावास्क्रिप्ट को इसके बजाय मिल जाएगा select
।
आमतौर पर, अगर मेरे पास एक फ़ील्ड है जो "रीड-ओनली" है, लेकिन सर्वर पर वापस सबमिट करने की आवश्यकता है, तो मैं डिस्प्ले को डिसेबल (या बस टेक्स्ट) कर दूंगा, लेकिन फिर उसी नाम के साथ एक हिडन फ़ील्ड जोड़ें। आपको अभी भी यह सुनिश्चित करने की आवश्यकता है कि फ़ील्ड वास्तव में सर्वर-साइड पर संशोधित नहीं है - बस इसे अपने एक्शन में मॉडल से अपडेट न करें - लेकिन त्रुटियां होने पर मॉडल स्थिति अभी भी सटीक होगी।
प्रपत्र सबमिट करने से पहले आप इस तरह कोड का उपयोग भी कर सकते हैं:
$(":disabled", $('#frmMain')).removeAttr("disabled");
Ajax.BeginForm
?
डिज़ाइन ब्राउज़रों द्वारा इसका समर्थन नहीं किया जाता है।
या तो उन्हें बनाएं readonly
जो सर्वर पर मान जमा करने की अनुमति देता है या यदि आप उन नियंत्रणों के साथ काम कर रहे हैं जो अभी भी readonly
चयन जैसे विशेषता के साथ उपयोग करने योग्य हैं , pointer-events: none;
तो उन्हें गैर-संवादात्मक बनाने के लिए सीएसएस शैली जोड़ें
एक हैक की तरह है, लेकिन काम करता है! यह तब भी काम करता है जब आप जावास्क्रिप्ट का उपयोग किए बिना सीधे सबमिट बटन के साथ फॉर्म जमा कर रहे हों। कोई अतिरिक्त काम की आवश्यकता नहीं है!
उदाहरण के लिए:
<select asp-for="TypeId"
asp-items="@(new SelectList(await TypeRepository.FetchTypesAsync(), "TypeId", "Name"))"
class="form-control form-control-sm"
readonly
style="pointer-events: none;">
</select>
जब हम अक्षम लेकिन चेक किए गए चेकबॉक्स के साथ काम कर रहे होते हैं और हम मूल्य पोस्ट करना चाहते हैं, तो हमें @ Html.CheckBoxFor छिपे हुए फ़ील्ड से पहले हमारे छिपे हुए फ़ील्ड को सुनिश्चित करना होगा।
निम्नलिखित वह लिंक है जहाँ से मुझे उत्तर मिला है। http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
Tasos का विस्तार करना (": अक्षम किया गया", $ ('# xxxForm'))। removeAttr ("अक्षम"); आप उपयोग कर सकते हैं:
$("#xxxForm").submit(function (e) {
e.preventDefault();
var form = this;
$('#Field1')[0].disabled = false;
$('#Field2')[0].disabled = false;
...
$('#FieldN')[0].disabled = false;
form.submit(); // submit bypassing the jQuery bound event
});
यह ASP.net में मॉडल मान प्रस्तुत करने में मदद करेगा:
$("#iD").attr("style", "pointer-events: none;background-color:rgb(220,220,220)");
मैं आमतौर पर चेकबॉक्स या चेकबॉक्स के लिए इस तरह का उपयोग करता हूं क्योंकि इसे अक्षम करने से मूल्य कम हो रहा है। Readonly चेकबॉक्स पर काम नहीं करता है और न ही।
@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)
इस स्क्रिप्ट को अपने पेज में @ स्क्रिप्ट स्क्रिप्ट में डालें। जब आप पृष्ठ सबमिट करते हैं तो यह इनपुट को सक्षम करेगा, और आपको सबमिट करने के बाद उपयोगकर्ता को किसी अन्य पृष्ठ पर पुनर्निर्देशित करना चाहिए।
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js">
$("form").submit(function () {
if ($('form').valid()) {
$("input").removeAttr("disabled");
}
});
</script>