এইচটিএমএল.হিডেনফোর কী করে?


105

যদিও আমি এইচটিএমএল.হিডেনফোর ডকুমেন্টেশন পড়েছি, তবে এটি কীসের জন্য ব্যবহৃত হয় তা আমি বুঝতে পারি নি ...

কেউ কি এর ব্যবহারগুলি ব্যাখ্যা করতে এবং একটি সংক্ষিপ্ত উদাহরণ দিতে পারে?

কোডগুলিতে সেই সাহায্যকারীদের কোথায় যাওয়া উচিত?

উত্তর:


112

এটি ক্ষেত্রটির জন্য (আপনার মডেল থেকে) ফর্মটিতে একটি লুকানো ইনপুট তৈরি করে যা আপনি এটি পাস করেন।

এটি আপনার মডেল / ভিউমোডেলের ক্ষেত্রগুলির জন্য দরকারী যে আপনাকে পৃষ্ঠাটিতে অবিরাম থাকতে হবে এবং অন্য কল করার পরে ফিরে এসেছিল তবে ব্যবহারকারীর দ্বারা দেখা উচিত নয়।

নিম্নলিখিত ভিউমোডেল ক্লাসটি বিবেচনা করুন:

public class ViewModel
{
    public string Value { get; set; }
    public int Id { get; set; }
}

এখন আপনি সম্পাদনা পৃষ্ঠাটি আইডিটি সঞ্চয় করতে চান তবে এটিটি দেখা যায় না:

<% using(Html.BeginForm() { %>
    <%= Html.HiddenFor(model.Id) %><br />
    <%= Html.TextBoxFor(model.Value) %>
<% } %>

এটি নিম্নলিখিত HTML এর সমতুল্য ফলাফল:

<form name="form1">
    <input type="hidden" name="Id">2</input>
    <input type="text" name="Value" value="Some Text" />
</form>

<% = এইচটিএমএল.হিডেনফোর্ড (মডেল.আইডি)%> <br /> উপরে তার উদাহরণে
ব্রাইস ফিশার

11
আমি ব্যবহারকারী দ্বারা "দেখা" বলব। ব্যবহারকারীরা যা চান, লুকানো বা না চান এমন কোনও কিছুকে "সংশোধন" করতে পারেন।
ক্রেগ স্টান্টজ

@ ক্রেইগ - আপনি ঠিক বলেছেন। আমি আসলে যদিও আমি সেই শব্দটির পরিবর্তন করেছি তবে দৃশ্যত নয়।
জাস্টিন নিসনার

এবং এটি সাধারণত আইডিটির জন্য ব্যবহৃত হয় (উপরে উদাহরণ হিসাবে), যা আপনি সাধারণত প্রদর্শন করতে চান না।
রিকঅ্যান্ডএমএসএফটি

আমি কিছুটা বিভ্রান্ত কারণ ভিউ মডেলটি নিয়ামকের পরামিতি নয়। তাহলে কেন ভিউ মডেলের ক্ষেত্রগুলিতে ইনপুটটির নাম উত্পন্ন হবে?
জন

8

এবং লুকানো আইডি ইনপুট আপনার সম্পাদনা ক্রিয়া পদ্ধতিতে ফিরে গ্রাস করতে:

[HttpPost]
public ActionResult Edit(FormCollection collection)
{
    ViewModel.ID = Convert.ToInt32(collection["ID"]);
}

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

@ ইয়েতি: ভুল। মজাদার ব্যবস্থা আইডি ক্ষেত্রটি যুক্ত করার একটি ভাল কারণ রয়েছে। এটি আমার একটি টিউটোরিয়াল থেকে সরান এবং এটি পোস্ট বডিতে নেই তা দেখতে ফিডলারটি ব্যবহার করুন।
রিকআ্যান্ডএমএসএফটি

2
মন্তব্যটি কীভাবে ভুল তা আমি নিশ্চিত নই। মডেলটি ভিউতে () 'ডি' এর সম্পত্তি হলে, নিয়ামক পদ্ধতিটি দৃ strongly়ভাবে টাইপ করা উচিত, এবং স্বয়ংক্রিয়ভাবে মডেলবাইন্ডার দ্বারা পপুলেটে।
এরিক ফিলিপস

2

অনেকগুলি ফাংশনের মতো, এটি বিভিন্নভাবে বিভিন্ন সমস্যার সমাধানের জন্য বিভিন্ন উপায়ে ব্যবহার করা যেতে পারে, আমি এটিকে আমাদের টুলবেল্টগুলির আর একটি সরঞ্জাম বলে মনে করি।

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

এইচটিএমএল হিডেনের জন্য একটি দুর্দান্ত অনুপ্রেরণা দেখতে, আমি আপনাকে সুপারিশ করি আপনি .NET এমভিসি - "@ মডেল" তে একটি নিয়ন্ত্রণকারীর কাছে একটি ভিউ থেকে ডেটা পাসিং ডেটা দেখতে পান


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