जवाबों:
यह फ़ील्ड (आपके मॉडल से) के लिए फॉर्म पर एक छिपा हुआ इनपुट बनाता है जिसे आप इसे पास करते हैं।
यह आपके मॉडल / ViewModel में उन क्षेत्रों के लिए उपयोगी है, जिन्हें आपको पृष्ठ पर बनाए रखने की आवश्यकता होती है और जब कोई अन्य कॉल किया जाता है, तो वापस आ जाता है, लेकिन उपयोगकर्ता द्वारा नहीं देखा जाना चाहिए।
निम्नलिखित ViewModel वर्ग पर विचार करें:
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>
और अपने संपादित कार्य पद्धति पर छिपे हुए आईडी इनपुट का उपभोग करने के लिए:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
बहुत सारे कार्यों की तरह, इस एक का उपयोग कई अलग-अलग तरीकों से कई अलग-अलग समस्याओं को हल करने के लिए किया जा सकता है, मुझे लगता है कि यह हमारे टूलबेल्स में एक और उपकरण है।
अब तक, चर्चा ने केवल एक आईडी छिपाने पर बहुत अधिक ध्यान केंद्रित किया है, लेकिन यह केवल एक ही मूल्य है, इसका उपयोग बहुत सारे मूल्यों के लिए क्यों नहीं किया जाता है! यह वही है जो मैं कर रहा हूं, मैं एक समय में केवल एक दृश्य में मानों को लोड करने के लिए इसका उपयोग करता हूं, क्योंकि html.beginform एक नई वस्तु बनाता है और अगर उस दृश्य के लिए आपके मॉडल ऑब्जेक्ट में पहले से ही कुछ मान थे, तो मूल्यों को तब तक खो दिया जाएगा जब तक आप शुरुआती में उन मूल्यों का संदर्भ नहीं देते।
HTML.hiddenfor के लिए एक महान प्रेरणा देखने के लिए, मैं आपको .NET MVC में एक व्यूअर से कंट्रोलर को डेटा देखने की सलाह देता हूं - "@model" हाइलाइटिंग नहीं
रेजर कोड का उपयोग @ Html.Hidden या @ Html.HiddenFor निम्न Html कोड के समान है
<input type="hidden"/>
और निम्न लिंक को भी देखें