উত্তর:
@Html.TextBoxFor(m => m.userCode, new { @readonly="readonly" })
আপনি এটির জন্য এইচটিএমএল সহায়ক তৈরি করতে আপনাকে স্বাগত জানালেন তবে এটি কেবল অন্যের মতো একটি এইচটিএমএল বৈশিষ্ট্য। আপনি কি এমন কোনও পাঠ্য বাক্সের জন্য এইচটিএমএল সহায়ক তৈরি করতে পারেন যাতে অন্যান্য বৈশিষ্ট্য রয়েছে?
@
। আপনি কেবলমাত্র এটিকে এইচটিএমএল বৈশিষ্ট্যগুলির সাথে মেলে এমন কীওয়ার্ডগুলির সাথে দেখতে পাবেন (যেমন কেবলমাত্র পাঠ্য, শ্রেণী ইত্যাদি)
@
মেলে এমন বৈশিষ্ট্যগুলি ব্যবহার করতে একটি প্রয়োজন ।
@Html.TextBoxFor(m => m.userCode, new { @readonly="readonly", @class="form-control" })
আপডেট: এখন ডিফল্ট সম্পাদক টেম্পলেটগুলিতে এইচটিএমএল বৈশিষ্ট্য যুক্ত করা খুব সহজ। এটি করার পরিবর্তে এটি নিকটস্থ হয়:
@Html.TextBoxFor(m => m.userCode, new { @readonly="readonly" })
আপনি কেবল এটি করতে পারেন:
@Html.EditorFor(m => m.userCode, new { htmlAttributes = new { @readonly="readonly" } })
উপকারিতা: .TextBoxFor
টেমপ্লেটগুলির জন্য আপনাকে কল করতে হবে না । শুধু কল .EditorFor
।
@ শার্কের সমাধানটি সঠিকভাবে কাজ করে এবং এটি সহজ এবং দরকারী, আমার সমাধান (যা আমি সর্বদা ব্যবহার করি) এটি হ'ল: এমন একটি তৈরি করুন editor-template
যা readonly
বৈশিষ্ট্য পরিচালনা করতে পারে :
EditorTemplates
মধ্যে~/Views/Shared/
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(true)]
আপনি যে বৈশিষ্ট্যগুলি হতে চান তাতে বৈশিষ্ট্যটি রেখে দিন readonly
।
উদাহরণ স্বরূপ,
public class Model {
// [your-annotations-here]
public string EditablePropertyExample { get; set; }
// [your-annotations-here]
[ReadOnly(true)]
public string ReadOnlyPropertyExample { get; set; }
}
এখন আপনি রেজারের ডিফল্ট বাক্য গঠন সহজভাবে ব্যবহার করতে পারেন:
@Html.EditorFor(m => m.EditablePropertyExample)
@Html.EditorFor(m => m.ReadOnlyPropertyExample)
প্রথমটি এর text-box
মতো একটি সাধারণ রেন্ডার করে :
<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
।
টেক্সটবক্সফোর্ডের সাথে সমাধানটি ঠিক আছে, তবে আপনি যদি এডিটবক্স স্টাইলিশের মতো ক্ষেত্রটি দেখতে না চান (এটি ব্যবহারকারীর জন্য কিছুটা বিভ্রান্তিকর হতে পারে) পরিবর্তনের সাথে জড়িত:
পরিবর্তনের আগে রেজার কোড
<div class="editor-field">
@Html.EditorFor(model => model.Text)
@Html.ValidationMessageFor(model => model.Text)
</div>
পরিবর্তনের পরে
<!-- 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>
সাধারণত, এই সমাধানটি ক্ষেত্রটিকে সম্পাদনা করা থেকে বিরত করে তবে এর মান দেখায়। কোড-পিছনে পরিবর্তনগুলির প্রয়োজন নেই।
@ ব্রোনেক এবং @ শিমি দ্বারা পূর্ববর্তী উত্তরের ক্রেডিট সহ:
এটি এএসপি.নেট কোরে একই কাজটি করার মতো:
<input asp-for="DisabledField" disabled="disabled" />
<input asp-for="DisabledField" class="hidden" />
প্রথম ইনপুটটি কেবল পঠনযোগ্য এবং দ্বিতীয়টি নিয়ামকের কাছে মানটি পাস করে এবং লুকানো থাকে। আমি আশা করি এটিপি.এনইটি কোরের সাথে কাজ করা কারও পক্ষে এটি কার্যকর হবে।
@Html.TextBox("Receivers", Model, new { @class = "form-control", style = "width: 300px", @readonly = "readonly" })
@Html.TextBoxFor(model => model.IsActive, new { readonly= "readonly" })
এটি পাঠ্য বাক্সের জন্য ঠিক is তবে, যদি আপনি checkbox
এটির জন্য একই চেষ্টা করে থাকেন তবে যদি আপনি এটি ব্যবহার করে থাকেন তবে এটি ব্যবহার করার চেষ্টা করুন:
@Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })
তবে ব্যবহার করবেন না disable
, কারণ অক্ষম সর্বদা false
সার্ভারে ডিফল্ট মান প্রেরণ করে - হয় তা চেকড বা চেক করা অবস্থায় ছিল না। এবং readonly
চেকবক্স এবং এর জন্য কাজ করে না radio button
। readonly
শুধুমাত্র text
ক্ষেত্রের জন্য কাজ করে।
পাঠ্য-পাঠ্য হিসাবে কেবল পাঠ্যবক্স তৈরি করার জন্য আপনি নীচের কোডটি ব্যবহার করতে পারেন।
পদ্ধতি 1
@Html.TextBoxFor(model => model.Fields[i].TheField, new { @readonly = true })
পদ্ধতি 2
@Html.TextBoxFor(model => model.Fields[i].TheField, new { htmlAttributes = new {disabled = "disabled"}})
@
উপসর্গটি অনুপস্থিতreadonly
। আমার সম্পাদনা দেখুন।