আমি কীভাবে এএসপি.নেট এমভিসিতে অক্ষম ইনপুট জমা দেব?


108

আমি কীভাবে এএসপি.নেট এমভিসিতে অক্ষম ইনপুট জমা দেব?


3
সাধারণত আপনার প্রশ্নের প্রশ্ন হিসাবে বাক্যাংশের প্রয়োজন এবং উত্তর আলাদাভাবে পোস্ট করতে হবে। ভোট বন্ধ; আপনাকে 'উত্তর' অংশটি একটি আসল উত্তরে সরিয়ে দেওয়ার পরামর্শ দিচ্ছে।
জর্জ স্টকার

1
আমি বিশ্বাস করি @ ধাওয়াল পোস্টটি আপনার প্রশ্নের অক্ষম শব্দের কারণে ঠিক উত্তর answer
কিউমাস্টার

উত্তর:


160

আপনি কি মাঠের readonly="readonly"পরিবর্তে তৈরি করতে পারবেন না disabled="disabled"? ব্যবহারকারীর দ্বারা অ-সম্পাদনযোগ্য থাকা অবস্থায় একটি পঠনযোগ্য ক্ষেত্রের মান সার্ভারে জমা দেওয়া হবে। একটি SELECTট্যাগ যদিও ব্যতিক্রম।


1
পঠনযোগ্যভাবে কাজ করে তবে এটি ক্ষেত্রের ধূসর হয় না। এখানে আমি ব্যবহার করছি এমন একটি উদাহরণ: আমি <%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>কীভাবে এটিকে ধূসর করে তুলতে পারি তা দৃশ্যত দেখে মনে হয় এটি সম্পাদনাযোগ্য নয়। এখনো ভালো আমরা LabelFor অনুরূপ কিছু ব্যবহার করতে পারেন, আমি LabelFor চেষ্টা করেছিলেন কিন্তু এটি শুধুমাত্র প্রদর্শন নাম পায় ....
VoodooChild

22
4 বছর। নেট অ্যাস্প এবং আমি কখনই জানতাম না যে অক্ষম ইনপুটগুলি পোষ্ট ফিরে পাবে না ... কীভাবে সে আমাকে পাশ করল? কেবলমাত্র অক্ষম বাছাই করা ক্ষেত্রের জন্য একটি লুকানো ক্ষেত্র অন্তর্ভুক্ত করুন এবং এর সবগুলি সাজানো হয়েছে (যদিও আইডির ফর্মটি পুনরাবৃত্তি করা হচ্ছে যা অনুমোদিত নয়)
পাইওটর কুলা

5
এটি কোনও type="checkbox"ইনপুটগুলির জন্যও কাজ করে না
নাথান

1
আমি রেডিও বোতামগুলির সাথে একই জিনিসটি করার চেষ্টা করছি কিন্তু কেবল পাঠ্যই সেগুলিতে কাজ করে না বলে মনে হয়।
র্যান্ডি আর

38

সবাইকে ধন্যবাদ:

আমি যেভাবে এটি সমাধান করেছি:

document.getElementById("Costo").readOnly = true;
document.getElementById("Costo").style.color = "#c0c0c0";

বিঃদ্রঃ:

উত্তরে আমি এই তথ্য পেয়েছি তবে আমি সম্পাদিত হয়েছি।


1
এটি আমার পক্ষে বেশ কার্যকরভাবে কার্যকর হয়নি (এটি এই লিঙ্কটির জন্য ধন্যবাদ জানায় )। এটি কাজ করেছে: textBox.Attributes.Add("readonly", "readonly");এবং ব্যাখ্যাটি লিঙ্কটিতে রয়েছে
brian-d

এটি আমার পক্ষে আরও বোধগম্য হওয়ায় আপনি এটি সম্পাদনা করেছেন তা ভাল।
ইয়াওয়ার

কেবলমাত্র পঠনযোগ্যভাবেই যাওয়ার উপায় বলে মনে হচ্ছে। এটি নিয়ন্ত্রণ ফিরিয়ে না দেওয়ার মতো অদ্ভুত কাজ করে না তবে এটি সম্পাদনা করার অনুমতি দেয় না। মুছাস গ্রাসিয়াস!
মারিউজ

মাইকেল ব্রেন্টের মন্তব্যে যুক্ত করতে, আপনি যদি jQuery ব্যবহার করেন তবে দ্বিতীয় লাইনটি হয়ে যায় $("#textBoxId").css("color", "#c0c0c0")
এফ 1 ক্রাজি

30

@ পিপমকিন এই উত্তরে তার মন্তব্যে এটি উল্লেখ করেছেন তবে আমি প্রতিবন্ধী থেকে ডেটা জমা দেওয়ার অন্যান্য সংস্থান খুঁজে পেতে না পারায় আমি এটি হাইলাইট করতে চেয়েছিলাম <select>। আমি এটিও বিশ্বাস করি যে এটি প্রশ্নের সাথে প্রাসঙ্গিক কারণ নির্বাচনগুলি <input>গুলি নয় তবে তারা "ইনপুট" গুলি।

কেবলমাত্র অক্ষম নির্বাচন এবং এটির জন্য বাছাই করা একটি লুকানো ক্ষেত্র অন্তর্ভুক্ত করুন।

উদাহরণ:

@Html.DropDownListFor(model => model.SelectedID, ... , new { disabled = "disabled"}) @* Won't be posted back *@
@Html.HiddenFor(model => model.SelectedID) @* Will be posted back *@

সাবধানতা: এটি একই আইডির সাথে পৃষ্ঠায় দুটি ট্যাগ লাগিয়ে দেবে যা সত্যিকারেরভাবে বৈধ এইচটিএমএল নয় এবং জাভাস্ক্রিপ্ট সহ মাথাব্যথার কারণ হতে পারে। আমার জন্য, এটির এইচটিএমএল দ্বারা ড্রপডাউনটির মান নির্ধারণ করার জন্য আমার কাছে জাভাস্ক্রিপ্ট রয়েছে idএবং আপনি যদি লুকানো ক্ষেত্রটি প্রথমে রাখেন তবে জাভাস্ক্রিপ্টটি এটির পরিবর্তে সন্ধান করবে select


20

সাধারণত, আমার যদি এমন একটি ক্ষেত্র থাকে যা "কেবল পঠনযোগ্য" তবে সার্ভারে আবার জমা দেওয়ার দরকার হয়, আমি প্রদর্শনটি অক্ষম করব (বা কেবল পাঠ্য), তবে তার পরে একই নামের সাথে একটি লুকানো ক্ষেত্র যুক্ত করব। আপনাকে এখনও নিশ্চিত করতে হবে যে ক্ষেত্রটি আসলে সার্ভার-সাইডে পরিবর্তিত হয়নি - কেবল আপনার ক্রিয়াকলাপের মডেল থেকে এটি আপডেট করবেন না - তবে ত্রুটি থাকলে মডেল রাষ্ট্রটি এখনও সঠিক হবে accurate


হ্যাঁ, আপনি যা খাচ্ছেন তা করার জন্য আমি ভাবছিলাম। তবে আমাকে আরও ভেরিয়েবলগুলি পরিচালনা করতে হবে। আমি আশা করছি যে এটি আমার পোস্টটি গুগলে উপস্থিত হবে এবং একটি সহজ সমাধানের সন্ধানে লোকেরা ক্ষতিগ্রস্থ হতে হবে না।
সানচিটোস

4
আপনার সমাধানের সাথে একটি সমস্যা হ'ল জাভাস্ক্রিপ্ট অক্ষম করা থাকলে এটি ভেঙে যায়। লুকানো ফিল্ড সার্ভার-সাইড ইনজেকশনে এই সমস্যা নেই।
tvanfosson

15

ফর্মটি জমা দেওয়ার আগে আপনি এই জাতীয় কোড ব্যবহার করতে পারেন:

$(":disabled", $('#frmMain')).removeAttr("disabled");

2
আমি এটি ব্যবহার করেছি, লুকানো উপাদানগুলির বিষয়ে চিন্তা করার দরকার নেই,
জেএস

2
কেবলমাত্র পঠনযোগ্য পরিবর্তে অক্ষম ব্যবহারের বিষয়ে উল্লিখিত অনেক জবাবের বিপরীতে আমি বিশ্বাস করি যে আমাদের অনেক ক্ষেত্রে অক্ষম ব্যবহার করা দরকার, আমি প্রায় একই রকম প্রশ্নে প্রায় 15 টি উত্তর পড়েছি এবং অক্ষম বৈশিষ্ট্য অপসারণের জন্য উপযুক্ত উপাদানগুলি নির্বাচন করতে কেবল নিজের jQuery ফিল্টার দিয়ে এটিকে বেছে নিয়েছি, দুর্দান্ত ধন্যবাদ।
কিউমাস্টার

আপনি কি জমা দিচ্ছেন Ajax.BeginForm?
মার্কজজ

ব্যবহারের OnBegin " msdn.microsoft.com/en-us/library/... "
Dhaval Pankhaniya

1
কিছুটা অদ্ভুত
লাগছে

8

ডিজাইন দ্বারা ব্রাউজারগুলি এটি সমর্থন করে না।

হয় সেগুলিতে তৈরি করুন readonlyযা সার্ভারে মান জমা দেওয়ার অনুমতি দেয় বা যদি আপনি এমন নিয়ন্ত্রণগুলি নিয়ে কাজ করছেন যেগুলি এখনও readonlyনির্বাচন করুন, সিএসএস শৈলীর মতো বৈশিষ্ট্যের সাথে ব্যবহারযোগ্য arepointer-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>

6

আপনি নীচের মত একটি সম্পাদক টেম্পলেট তৈরি করতে পারেন

সিএসএস

.disabled {
    background-color:lightgray;
}

সম্পাদক টেম্পলেট

@model string
@Html.TextBoxFor(x => x,new {@class="disabled", @readonly=true })

2

যখন আমরা অক্ষম কিন্তু চেকবক্সবক্সগুলি নিয়ে কাজ করি এবং আমরা মানটি পোস্ট করতে চাই, আমাদের নিশ্চিত করা দরকার যে আমাদের লুকানো ক্ষেত্রটি @ এইচটিএমএল.চেকবক্সের জন্য লুকানো ক্ষেত্রের আগে উপস্থিত হবে।

নীচের লিঙ্কটি আমি উত্তর পেয়েছি যেখানে থেকে। http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033


1

তাসোস (": অক্ষম", $ ('# এক্সএক্সএক্সএক্সফর্ম') প্রসারণ করা হচ্ছে। অপসারণ ("অক্ষম"); তুমি ব্যবহার করতে পার:

$("#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
});


0

আমি সাধারণত চেকবক্স বা চেকবক্সফোরের জন্য এইভাবে ব্যবহার করি কারণ এটিকে অক্ষম করা মানটি হারাতে বাধ্য করে। পঠনযোগ্য চেকবক্সেও কাজ করে না।

@Html.DisplayFor(m => m.Order.Transfer)
@Html.HiddenFor(m => m.Order.Transfer)

0

আপনার পৃষ্ঠায় এই স্ক্রিপ্টটি @ সেকশন স্ক্রিপ্টগুলিতে রেখে দিন। আপনি পৃষ্ঠাটি জমা দেওয়ার সময় এটি ইনপুটগুলিকে সক্ষম করবে এবং আপনার জমা দেওয়ার পরে ব্যবহারকারীকে অন্য পৃষ্ঠায় পুনর্নির্দেশ করা উচিত।

<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>


-3

কেবলমাত্র সেই ভিউমোডেলে সেই ভিউটির সাথে যুক্ত সম্পত্তিটি [প্রয়োজনীয়] করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.