แม้ว่าฉันจะอ่านเอกสารเกี่ยวกับ Html.HiddenFor แต่ฉันไม่เข้าใจว่ามันใช้สำหรับอะไร ...
ใครช่วยอธิบายการใช้งานและยกตัวอย่างสั้น ๆ ได้ไหม
ตัวช่วยเหล่านั้นควรอยู่ที่ไหนในรหัส?
แม้ว่าฉันจะอ่านเอกสารเกี่ยวกับ Html.HiddenFor แต่ฉันไม่เข้าใจว่ามันใช้สำหรับอะไร ...
ใครช่วยอธิบายการใช้งานและยกตัวอย่างสั้น ๆ ได้ไหม
ตัวช่วยเหล่านั้นควรอยู่ที่ไหนในรหัส?
คำตอบ:
จะสร้างอินพุตที่ซ่อนอยู่ในแบบฟอร์มสำหรับฟิลด์ (จากโมเดลของคุณ) ที่คุณส่งผ่าน
มีประโยชน์สำหรับฟิลด์ใน Model / ViewModel ของคุณที่คุณต้องคงอยู่บนเพจและส่งกลับไปเมื่อมีการโทรอีกครั้ง แต่ผู้ใช้ไม่ควรมองเห็น
พิจารณาคลาส ViewModel ต่อไปนี้:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
ตอนนี้คุณต้องการให้หน้าแก้ไขเก็บ ID แต่ไม่เห็น:
<% 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>
และหากต้องการใช้อินพุต ID ที่ซ่อนอยู่ในวิธีการแก้ไขการดำเนินการของคุณ:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
เช่นเดียวกับฟังก์ชั่นมากมายอันนี้สามารถใช้ในหลาย ๆ วิธีในการแก้ปัญหาที่แตกต่างกันฉันคิดว่ามันเป็นอีกเครื่องมือหนึ่งในเครื่องมือของเรา
จนถึงขณะนี้การสนทนาได้มุ่งเน้นไปที่การซ่อน ID เพียงอย่างเดียว แต่นั่นเป็นเพียงค่าเดียวทำไมไม่ใช้เพื่อเพิ่มมูลค่ามากมาย! นั่นคือสิ่งที่ฉันกำลังทำฉันใช้มันเพื่อโหลดค่าในคลาสเพียงครั้งละหนึ่งมุมมองเนื่องจาก html.beginform สร้างวัตถุใหม่และถ้าวัตถุโมเดลของคุณสำหรับมุมมองนั้นมีค่าบางอย่างที่ส่งผ่านไปแล้วสิ่งเหล่านั้น ค่าจะหายไปเว้นแต่คุณจะให้การอ้างอิงถึงค่าเหล่านั้นในแบบเริ่มต้น
หากต้องการดูแรงจูงใจที่ดีสำหรับ html.hiddenfor ฉันขอแนะนำให้คุณดูการส่งข้อมูลจากมุมมองไปยังคอนโทรลเลอร์ใน. NET MVC - "@model" ไม่ได้เน้น
การใช้รหัส Razor @ Html.Hidden หรือ @ Html.HiddenFor คล้ายกับรหัส Html ต่อไปนี้
<input type="hidden"/>
และอ้างอิงลิงค์ต่อไปนี้