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


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.