ในเครื่องมือมีดโกนฉันใช้LabelFor
วิธีผู้ช่วยในการแสดงชื่อ
แต่ดูเหมือนว่าชื่อที่แสดงจะแสดงได้ไม่ดีนัก ต้องเปลี่ยนชื่อที่แสดงต้องทำยังไง ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
ในเครื่องมือมีดโกนฉันใช้LabelFor
วิธีผู้ช่วยในการแสดงชื่อ
แต่ดูเหมือนว่าชื่อที่แสดงจะแสดงได้ไม่ดีนัก ต้องเปลี่ยนชื่อที่แสดงต้องทำยังไง ....
@Html.LabelFor(model => model.SomekingStatus, new { @class = "control-label"})
คำตอบ:
คุณสามารถตกแต่งคุณสมบัติโมเดลมุมมองของคุณด้วย[DisplayName]
แอตทริบิวต์และระบุข้อความที่จะใช้:
[DisplayName("foo bar")]
public string SomekingStatus { get; set; }
หรือใช้ตัวช่วย LabelFor ที่มากเกินไปซึ่งช่วยให้คุณระบุข้อความ:
@Html.LabelFor(model => model.SomekingStatus, "foo bar")
และไม่คุณไม่สามารถระบุชื่อคลาสใน MVC3 ได้ตามที่คุณพยายามทำเนื่องจากตัวLabelFor
ช่วยไม่รองรับ อย่างไรก็ตามสิ่งนี้จะใช้ได้ใน MVC4 หรือ 5
@Html.LabelFor(model => model.SomekingStatus, "something other than foo bar")
นี่เป็นคำถามเก่า แต่คำตอบที่มีอยู่ไม่สนใจปัญหาร้ายแรงของการทิ้งแอตทริบิวต์ที่กำหนดเองเมื่อคุณสร้างโมเดลขึ้นมาใหม่ ฉันกำลังเพิ่มคำตอบโดยละเอียดเพื่อให้ครอบคลุมตัวเลือกปัจจุบันที่มี
[DisplayName("Name goes here")]
แอตทริบิวต์ให้กับคลาสโมเดลข้อมูล ข้อเสียคือสิ่งนี้จะถูกทิ้งเมื่อใดก็ตามที่คุณสร้างแบบจำลองข้อมูลใหม่Html.LabelFor
ไฟล์. เช่น@Html.LabelFor(model => model.SomekingStatus, "My New Label", new { @class = "control-label"})
อ้างอิง: https://msdn.microsoft.com/en-us/library/system.web.mvc.html.labelextensions.labelfor(v=vs.118).aspxข้อเสียคือคุณต้องทำซ้ำป้าย ในทุกมุมมองMicrosoft อนุญาตให้ตกแต่งคุณสมบัติบนคลาส Entity Framework โดยไม่ต้องแก้ไขคลาสที่มีอยู่ ! โดยมีคลาส meta-data ที่แนบกับคลาสฐานข้อมูลของคุณ (เป็นส่วนขยายด้านข้างของคลาส EF ของคุณอย่างมีประสิทธิภาพ) สิ่งนี้อนุญาตให้เพิ่มแอตทริบิวต์ไปยังคลาสที่เกี่ยวข้องและไม่ใช่ในคลาสเองดังนั้นการเปลี่ยนแปลงจะไม่สูญหายไปเมื่อคุณสร้างโมเดลข้อมูลขึ้นมาใหม่
ตัวอย่างเช่นหากคลาสข้อมูลของคุณMyModel
มีSomekingStatus
คุณสมบัติคุณสามารถทำได้ดังนี้:
ก่อนอื่นให้ประกาศคลาสบางส่วนที่มีชื่อเดียวกัน (และใช้เนมสเปซเดียวกัน) ซึ่งช่วยให้คุณสามารถเพิ่มแอตทริบิวต์คลาสโดยไม่ถูกแทนที่:
[MetadataType(typeof(MyModelMetaData))]
public partial class MyModel
{
}
คลาสโมเดลข้อมูลที่สร้างขึ้นทั้งหมดเป็นคลาสบางส่วนซึ่งช่วยให้คุณสามารถเพิ่มคุณสมบัติและเมธอดพิเศษได้โดยเพียงแค่สร้างคลาสที่มีชื่อเดียวกันมากขึ้น (สิ่งนี้มีประโยชน์มากและฉันมักจะใช้เช่นเพื่อจัดเตรียมเวอร์ชันสตริงที่จัดรูปแบบของฟิลด์ประเภทอื่นในโมเดล ).
ขั้นตอนที่ 2: เพิ่มคลาสข้อมูลเมตาที่อ้างอิงโดยคลาสบางส่วนใหม่ของคุณ:
public class MyModelMetaData
{
// Apply DisplayNameAttribute (or any other attributes)
[DisplayName("My New Label")]
public string SomekingStatus;
}
[required]
ฯลฯ ) ดังนั้นคุณอาจต้องทำซ้ำสิ่งเหล่านั้นในคลาส Meta-dataคุณสามารถเปลี่ยนข้อความของป้ายกำกับได้โดยการตกแต่งคุณสมบัติด้วยDisplayName
แอตทริบิวต์
[DisplayName("Someking Status")]
public string SomekingStatus { get; set; }
หรือคุณสามารถเขียน HTML ดิบอย่างชัดเจน:
<label for="SomekingStatus" class="control-label">Someking Status</label>
ตกแต่งคุณสมบัติโมเดลด้วยแอ็ตทริบิวต์ DisplayName
@ Html.LabelFor (model => model.SomekingStatus, "foo bar")