এইচটিএমএল.টেক্সটবক্সফোর্ডের সাথে কীভাবে একটি ডিফল্ট মান সেট করবেন?


198

সাধারণ প্রশ্ন, আপনি যদি এএসপি.নেট এমভিসি ফ্রেমওয়ার্ক 1 থেকে এইচটিএমএল সহায়তা ব্যবহার করেন তবে একটি ওভারলোড রয়েছে বলে একটি পাঠ্যবক্সে একটি ডিফল্ট মান সেট করা সহজ Html.TextBox(string name, object value)। আমি যখন এইচটিএমএল.টেক্সটবক্সফোর পদ্ধতিটি ব্যবহার করার চেষ্টা করেছি , তখন আমার প্রথম অনুমানটি নিম্নলিখিতগুলি চেষ্টা করে যা কার্যকর হয়নি:

<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>

আমি কি আপাতত Html.TextBox (স্ট্রিং, অবজেক্ট) দিয়ে থাকা উচিত?


এটি <%: html.TextBoxfor (x => x.Age, new {value = "0"})%> ব্যবহার করুন, মানটিতে একটি ছোট পরিবর্তন ভি মূলধন করুন।
— মোহন সিং

উত্তর:


354

আপনি এটি চেষ্টা করতে পারেন

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>

49
মূলধন 'ভি' কাজ করে এবং ছোট ছোট 'ভি' কেন কাজ করে না তা জানতে আগ্রহী? এছাড়াও, এই সমাধানটি বয়সের জন্য মডেল মানটিকে ওভাররাইড করে, এমনকি যদি এটি উপস্থিত থাকে।
— ডেরেক হুনজিকার

74
সি # এমএসডিএন.মাইক্রোসফটকম /en-us/library/x9fsa0sw.aspx এর জন্য ছোট ভি সহ মানটি মূলশব্দ । সুতরাং আমি মনে করি এটি কাজ করে না কেন।
— তাসাডাক

3
এই মন্তব্যটি আপত্তি করা হয়েছে কারণ উত্তরের জন্য একটি উত্তর এই অস্পষ্ট এবং অন্তর্দৃষ্টিপূর্ণ মনে হয়েছিল ... অপর্যাপ্ত।
— এএইচডিভি

9
এটি এখনও কৌতূহল যে @ মানটি কাজ করে না। কেবল পঠনযোগ্যতা সি # এর একটি কীওয়ার্ড তবে @ রিডোনলি কোনও সমস্যা ছাড়াই কাজ করে।
— দিয়েগো

16
@ ভ্যালু ব্যবহার করার সময় ব্রাউজারের এইচটিএমএল উত্স হল <ইনপুট মান = "0" আইডি = "বয়স" নাম = "বয়স" প্রকার = "পাঠ্য" মান = "" />। ইনপুট ট্যাগে "0" সহ "মান" এবং "" সহ "" উভয়ই রয়েছে।
— রিকি

59

এটি এমভিসি 3 এবং এমভিসি 4 এর জন্য কাজ করা উচিত

 @Html.TextBoxFor(m => m.Age, new { @Value = "12" }) 

আপনি যদি এটি একটি গোপন ক্ষেত্র হতে চান

 @Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" }) 

21
লুকানো ক্ষেত্রগুলির জন্য, কেবলমাত্র @ এইচটিএমএল.হিডেনফোর্ড (এম => মি। এজ, নতুন {@ ভ্যালু = "12"}) ব্যবহার করুন
— বুগিনেটর

ভাল একটি @ এইচটিএমএল.হিডেনফোর্ডের জন্য (এম => মি। এজ, নতুন V @ ভ্যালু = "12"}) ঘোরাঘুরি করছে না
— রোলারকোস্টা

এবং আপনি কেন এইরকম একটি হার্ড কোডিং ডিফল্ট মান লুকিয়ে রাখবেন? অ ইন্দ্রিয়
— Antoine: পেলেতিয়ের

31

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

[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Create()
{
  // Loads default values
  Instructor i = new Instructor();
  return View("Create", i);
}

[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Create()
{
  // Does not load default values from instructor
  return View("Create");
}

সম্ভবত এটি এমভিসি বাগ বা বৈশিষ্ট্য, যেহেতু এইচটিএমএল.প্যাসওয়ার্ডফোর্ড (এম => মি। পাসওয়ার্ড, নতুন {শ্রেণি = "ফর্ম-নিয়ন্ত্রণ", মান = "ডিফল্ট" প্রায় একই এইচটিএমএল হিসাবে রেন্ডার করা হয়েছে, এবং "ডিফল্ট" যান) মানটি সফলভাবে প্রদর্শিত হচ্ছে। উদাহরণস্বরূপ, মান = মডেল E ইমেইল কাজ করে তবে মান = ভিউব্যাগ.ইমেল কাজ করে this সুতরাং এই গৃহীত উত্তরটি আরও ভাল এবং ক্লিনার, তাই হ্যাকিং নয়
— ZZZ

কী Instructor?
— সিএসবা তোথ

20

ডিফল্ট মানটি আপনার Model.Ageসম্পত্তির মান হবে । পুরো পয়েন্ট এ ধরনের।


3
মডেল যখন ডিফল্ট মানগুলি পরিচালনা করে তবে এটি খারাপ ধারণা বলে মনে হয়। মডেল আইটেমগুলির একই সংগ্রহের জন্য যখন বিভিন্ন ডিফল্ট মান প্রয়োজন হয় তখন কী করা উচিত?
— RredCat

@ রেডট্যাগি সম্মত হয়েছে, এটি ইউআই স্তরটির বিচ্ছেদকে শঙ্কিত করে
— ইভান এম

18

আপনি সহজভাবে করতে পারেন:

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>

বা আরও ভাল, মডেলটি শূন্য হলে এটি ডিফল্ট মান '0' এ চলে যাবে, উদাহরণস্বরূপ, যদি সম্পাদনা এবং তৈরি উভয়ের ক্ষেত্রে আপনার একই মত থাকে:

@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })

11

মান = "0" @ Html.TextBoxfor এর জন্য খেলাপি মান নির্ধারণ করবে

এর ক্ষেত্রে সংবেদনশীল "ভি" মূলধন হওয়া উচিত

নীচে কাজ উদাহরণ:

@Html.TextBoxFor(m => m.Nights, 
    new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })

9

আমি কীভাবে এটি সমাধান করেছি তা এখানে। আপনি যদি এটিকে সম্পাদনার জন্য ব্যবহার করেন তবে এটি কাজ করে।

@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })

যদি বয়স নাল হয় .. আপনি একটি নাল পয়েন্টার ব্যতিক্রম পেতে চলেছেন কারণ ?? ToString () এর রিটার্ন পরীক্ষা করার চেষ্টা করতে যাচ্ছে।
— agগলই 22

@ eaglei22 নুলাবল <T>। মানটি শূন্য হলে টুস্ট্রিং () খালি স্ট্রিংটি ফিরিয়ে দেবে।
— টম লিন্ট

একটি বেনামী বস্তু বেঁধে মডেল কিভাবে দেখাচ্ছে জন্য আপনাকে ধন্যবাদ
— শূন্য

9

আমার জন্য এই কাজ

@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })

নামকৃত প্যারামিটারের জন্য +1 যা অনুলিপি / পাস্টেবল কোডে বিশেষত সহায়ক এবং একাধিক ওভারলোড সহ একটি পদ্ধতি ব্যবহার করে
— একুশ

8

ব্যবহার @Valueহ্যাক, কারণ এটি দুটি বৈশিষ্ট্যকে ছাড়িয়ে যায়, যেমন:

<input type="..." Value="foo" value=""/>

পরিবর্তে আপনার এটি করা উচিত:

@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")

7

এটি আমার পক্ষে কাজ করেছিল, এইভাবে আমরা খালি স্ট্রিংয়ে ডিফল্ট মান সেট করি

@Html.TextBoxFor(m => m.Id, new { @Value = "" })

2
এই কোডটি প্রশ্নের উত্তর দিতে পারে, তবে এটি কীভাবে কাজ করে এবং কখন এটি ব্যবহার করবে তা ব্যাখ্যা করে কিছু প্রসঙ্গ অন্তর্ভুক্ত করা ভাল। কোড-কেবল উত্তরগুলি দীর্ঘমেয়াদে কার্যকর নয়।
— বনো

@ বনো কিছু মন্তব্য যুক্ত করেছেন
— এরিক_েরি

5

যদি আপনার সম্পাদনা এবং যোগ উভয়ের জন্য আংশিক পৃষ্ঠা ফর্ম থাকে তবে আমি যে কৌশলটি ডিফল্ট মানটিতে ব্যবহার করি তা 0হ'ল নিম্নলিখিতটি করা:

@Html.TextBox("Age", Model.Age ?? 0)

সেভাবে এটি 0আনসেট করা থাকলে বা আসল বয়স যদি তা বিদ্যমান থাকে।


1
বয়স যদি কোন অন্তর্নির্মিত হয়, তবে এটি কার্যকর হবে না; এটি একটি nullable int করা প্রয়োজন।
— জাস্টিন স্ব

0

এটি ব্যবহার করে দেখুন, এটি নতুন remove remove সরান এবং স্ট্রিংয়ের সাথে এটি প্রতিস্থাপন করুন।

<%: Html.TextBoxFor(x => x.Age,"0") %>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.