এএসপি.নেট এমভিসি 3: পাঠ্যবক্সফোর্ডের সাথে "নাম" বৈশিষ্ট্যকে ওভাররাইড করুন


100

Html.TextBoxForনামের অ্যাট্রিবিউটকে ওভাররাইড করার সময় এটি কী সম্ভব ?

আমি কোন সাফল্য দিয়ে চেষ্টা করেছি। কাজ করার জন্য ক্লায়েন্ট সাইডের বৈধতা পাওয়ার জন্য আমাকে টেক্সটবক্সফোর ব্যবহার করতে হবে, তবে যে কারণে আমি প্রবেশ করতে যাব না তার জন্য উত্পন্নটি থেকে আলাদা হওয়া আমার পাঠ্যবক্সের নাম প্রয়োজন।

আমি নিম্নলিখিত চেষ্টা করেছি:

@Html.TextBoxFor(x => x.Data, new { name = Model.Key + "_Data", id = Model.Key + "_Data" })

যা আইডির জন্য কাজ করে তবে নাম নয়। এটা কি সম্ভব?

আপডেট : টেক্সটবক্সফোর্ডের জন্য কোডটি সন্ধান করছেন। দেখে মনে হচ্ছে না যে কোনও সহজ উপায় আছে। আশা করি কেউ আমাকে ভুল প্রমাণ করতে পারে।


'ডেটা' এর ডেটা টাইপ কী
আর্কিল


4
এই প্রশ্নগুলি কিছু আলাদা জিজ্ঞাসা করছে। এছাড়াও - এটি তিনটির মধ্যে পুরোনো, সুতরাং আমার মনে হয় আপনি এটি দ্বারা নকল করেছেন।
রব স্টিভেনসন-লেগেট

উত্তর:


236

রব, আসলে অনেক সহজ উপায় আছে। পরিবর্তে নাম ব্যবহার নাম :

@Html.TextBoxFor(x => x.Data, new { Name = Model.Key + "_Data", id = Model.Key + "_Data" })

11
কেস-সংবেদনশীল এটি @ হাইউইঞ্জার্স, এই ক্ষুদ্র বিশদটি কয়েক ঘন্টা বাঁচানোর সম্ভাবনা রাখে।
আনার খলিলভ

4
ওভারকিল .. নাম কিন্তু আইডি X_X
ভ্লাদিমিরস

4
অদ্ভুত, "আইডি" কেস-সংবেদনশীল নয় (আইডি এবং আইডি দিয়ে সূক্ষ্ম কাজ করে) তবে "নাম" নয়।
ভ্লাদিমিরস

10
ASP.NET 4 দিয়ে Nameদুটি বৈশিষ্ট্যে ফলাফল সরবরাহ করে Nameএবং name, এবং মডেল বাইন্ডারটি ব্যবহার করে name
GSerg

4
তবে দুটি পৃথক সম্পত্তি হ্যান্ডলিং করা যাদের নামগুলি কেবল কেস দ্বারা পৃথক হয় এটি রক্ষণাবেক্ষণের দুঃস্বপ্নের একটি রেসিপি .....
জেমস ম্যাককর্ম্যাক

41

আপনি নামেরটিতে একটি উপসর্গ প্রয়োগ করতে চান বলে আপনি এটি জিজ্ঞাসা করছেন? যদি তা হয় তবে ViewData.TemplateInfo.HtmlFieldPrefixআপনি নিজের কন্ট্রোলারে সেট করে এটি করতে পারেন ।

ব্র্যাড উইলসনের ব্লগ থেকে এই জিনিসগুলি সম্পর্কে আমি অনেক কিছু শিখেছি ।


এ যেন বিজয়ীর মতো! সুন্দর।
রব স্টিভেনসন-লেগেট

4
হ্যাঁ তারা এটিকে খুব সুন্দরভাবে লুকিয়ে রাখেনি তারা :)
জেমস ম্যাককমার্যাক

এটি আমাকে কিছু মাথা ব্যাথা এবং কোডের নকল রক্ষা করেছে।
ডেভিডএক্সওয়াইজেড

13

এডিটরফোর্ডের একটি ওভারলোড রয়েছে যেখানে আপনি nameপ্যারামিটার হিসাবে অ্যাট্রিবিউট সরবরাহ করতে পারেন :

 @Html.EditorFor(expression, null, name)

4
এই ঘন্টাগুলি আগে আমি যদি খুঁজে পেয়েছি তবে আমাকে ঘন্টা বাঁচাতে পারত, হাহা
জনি করর

আকর্ষণীয়, তবে ড্রপডাউনলিস্টফোর্ডের মতো অনুরূপ সহায়কগুলির জন্য নামের অ্যাট্রিবিউটের জন্য কোনও ওভারলোড নেই, আপনাকে এটি এইচটিএমএল অ্যাট্রিবিউট প্যারামিটারে উল্লেখ করতে হবে (নামের সাথে মূলধন এন সহ)।
nmit026

8

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

 @Html.EditorFor(x => x.Data, "string", Model.Key + "_Data")

7

বেনের উত্তরটি আমাকে এইচটিএমএল.রো-র মোড়কের প্রয়োজন ব্যতীত আমি যা খুঁজছিলাম তা পেয়েছিল

@Html.Raw(Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData"))

4

একে মাইক্রোসফ্ট গোটচা বলা হয়

ক্যাপগুলিতে নামটি ব্যবহার করুন, এটি

@Html.TextBoxFor(m => m.Reply.Answer, new {@Name="Whatyouwant"})

3

কিছুটা "অযৌক্তিকতা" =), চেষ্টা করুন:

@Html.TextBoxFor(x => x.Data).ToString().Replace("Data", "NewData")

এটি করার জন্য একটি দুর্দান্ত সহজ পদ্ধতির মতো মনে হচ্ছে। যদি একটু হ্যাকি হয় :-)
রব স্টিভেনসন-লেগেট

উম্ম, এইভাবে, আপনি কেবল সাধারণ এইচটিএমএল.টেক্সবক্স নিতে চান না .. যেহেতু প্রতিস্থাপনের পরে কোনও স্ট্যাটিক টাইপিং যেভাবেই চলে যায়
তীক্ষ্ণ জন

1

আমার জন্য, এটি কাজ করে! আমি আশা করি যে সাহায্য!

@Html.EditorFor(model => model.Nome, new { htmlAttributes = new { @class = "form-control", @maxlength = "80", @id = "NomeFilter", @Name = "NomeFilter" } })

1
@Html.EditorFor(Model => Model.Something, "name", "name", new {@class = "form-control" })

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


এটি আইডি এবং নাম। এটি আমার জন্য কাজ করেছে। আমি উপরের সমস্ত উত্তরগুলি দিয়েছি এবং সেগুলির মধ্যে কোনওটিই কাজ করে নি, তবে এটি 1. ধন্যবাদ।
ওরিওন

public static MvcHtmlString EditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string templateName, string htmlFieldName, object additionalViewData);। কী হওয়ার templateNameকথা তা ধারণা নেই , তাই আমি ব্যবহার করেছি null। জন্য htmlFieldNameআমি (আমার ক্ষেত্রে "IPMI" এ "এই IPMI" পরিবর্তে) প্যারামিটারের নাম ব্যবহার করা হয়েছে। এটা আমার জন্য কৌতুক করেছে।
বিসিডটওইউবি

0

এই উদাহরণস্বরূপ, আমি অনুমতিগুলির উপর ভিত্তি করে ফর্ম ক্ষেত্রগুলি অক্ষম করছি, তবে এখনও সেগুলি দেখিয়ে দিচ্ছি। কন্ট্রোলারের কাছে মানটি প্রেরণের জন্য আমার কাছে একটি লুকানো ক্ষেত্র ছিল, তবে সম্পাদকফোরে একটি আলাদা ক্ষেত্রের নাম চেয়েছিল। মডেল মানের পরে প্রথম পরম "নাম" বৈশিষ্ট্য উপস্থাপন করে, দ্বিতীয়টি নতুন নাম।

@Html.EditorFor(m => m.UserName, "name", "UserNameDisabled", new { htmlAttributes = new { @class = "form-control", @disabled = "disabled"} });

ফলাফল স্বরূপ:

<input class="form-control text-box single-line" disabled="disabled" id="UserNameDisabled" name="UserNameDisabled" type="text" value="someEnteredValue" /> 

0

এটি সহজ রাখুন, আপনার ইতিমধ্যে আইডি সরবরাহ করা আপনার "টেক্সটবক্সফোর্ড" এর পরিবর্তে "টেক্সটবক্স" পদ্ধতিটি ব্যবহার করতে সক্ষম হওয়া উচিত এবং এটি ক্লায়েন্টের পক্ষে এবং সার্ভারের পক্ষে কাজ করবে। এছাড়াও, যদিও স্বীকৃত উত্তরটি কাজ করবে তবে আপনি যদি এটি ব্রাউজার ব্যবহার করে পরিদর্শন করেন তবে আপনার ট্যাগটিতে সদৃশ নাম বৈশিষ্ট্য তৈরি করবে। নীচের সমাধানটিতে সেই সমস্যা নেই।

এমভিসিএইচটিএমএল স্ট্রিং এইচটিএমএল.টেক্সটবক্স (স্ট্রিংয়ের নাম, স্ট্রিংয়ের মান, অবজেক্ট এইচটিএমএলঅ্যাট্রিবিউটস)

@Html.TextBox(Model.Key + "_Data", Model.Key, new { id = Model.Key + "_Data" }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.