ใน ASP.NET MVC 2 ฉันต้องการเขียนรายการแบบเลื่อนลงที่เรียบง่ายซึ่งให้ตัวเลือกคงที่ ตัวอย่างเช่นฉันต้องการระบุตัวเลือกระหว่าง "แดง" "น้ำเงิน" และ "เขียว"
ใน ASP.NET MVC 2 ฉันต้องการเขียนรายการแบบเลื่อนลงที่เรียบง่ายซึ่งให้ตัวเลือกคงที่ ตัวอย่างเช่นฉันต้องการระบุตัวเลือกระหว่าง "แดง" "น้ำเงิน" และ "เขียว"
คำตอบ:
ดูบทความนี้ MSDNและตัวอย่างการใช้งานที่นี่ในกองมากเกิน
สมมติว่าคุณมีคลาส Linq / POCO ดังต่อไปนี้:
public class Color
{
public int ColorId { get; set; }
public string Name { get; set; }
}
และสมมติว่าคุณมีโมเดลต่อไปนี้:
public class PageModel
{
public int MyColorId { get; set; }
}
สุดท้ายนี้สมมติว่าคุณมีรายการสีดังต่อไปนี้ อาจมาจากแบบสอบถาม Linq จากรายการคงที่ ฯลฯ :
public static IEnumerable<Color> Colors = new List<Color> {
new Color {
ColorId = 1,
Name = "Red"
},
new Color {
ColorId = 2,
Name = "Blue"
}
};
ในมุมมองของคุณคุณสามารถสร้างรายการแบบเลื่อนลงดังนี้:
<%= Html.DropDownListFor(n => n.MyColorId,
new SelectList(Colors, "ColorId", "Name")) %>
<%:
Html.DropDownListFor(
model => model.Color,
new SelectList(
new List<Object>{
new { value = 0 , text = "Red" },
new { value = 1 , text = "Blue" },
new { value = 2 , text = "Green"}
},
"value",
"text",
Model.Color
)
)
%>
หรือจะไม่เขียนคลาสใส่อะไรแบบนี้ลงในมุมมองโดยตรง
หลีกเลี่ยงการใช้นิ้วไขมันจำนวนมากโดยเริ่มจาก Dictionary ใน Model
namespace EzPL8.Models
{
public class MyEggs
{
public Dictionary<int, string> Egg { get; set; }
public MyEggs()
{
Egg = new Dictionary<int, string>()
{
{ 0, "No Preference"},
{ 1, "I hate eggs"},
{ 2, "Over Easy"},
{ 3, "Sunny Side Up"},
{ 4, "Scrambled"},
{ 5, "Hard Boiled"},
{ 6, "Eggs Benedict"}
};
}
}
ในมุมมองแปลงเป็นรายการสำหรับการแสดงผล
@Html.DropDownListFor(m => m.Egg.Keys,
new SelectList(
Model.Egg,
"Key",
"Value"))
สวัสดีนี่คือวิธีที่ฉันทำในโครงการเดียว:
@Html.DropDownListFor(model => model.MyOption,
new List<SelectListItem> {
new SelectListItem { Value = "0" , Text = "Option A" },
new SelectListItem { Value = "1" , Text = "Option B" },
new SelectListItem { Value = "2" , Text = "Option C" }
},
new { @class="myselect"})
ฉันหวังว่ามันจะช่วยใครสักคน ขอบคุณ
หรือถ้ามาจากบริบทฐานข้อมูลคุณสามารถใช้ได้
@Html.DropDownListFor(model => model.MyOption, db.MyOptions.Select(x => new SelectListItem { Text = x.Name, Value = x.Id.ToString() }))
ด้วย "โปรดเลือกหนึ่งรายการ"
@Html.DropDownListFor(model => model.ContentManagement_Send_Section,
new List<SelectListItem> { new SelectListItem { Value = "0", Text = "Plese Select one Item" } }
.Concat(db.NameOfPaperSections.Select(x => new SelectListItem { Text = x.NameOfPaperSection, Value = x.PaperSectionID.ToString() })),
new { @class = "myselect" })
ได้มาจากรหัส: Master Programmer && Joel Wahlund ;
อ้างอิงคิง: https://stackoverflow.com/a/1528193/1395101 JaredPar ;
ขอบคุณMaster Programmer && Joel Wahlund && JaredPar ;
ขอให้โชคดีนะเพื่อน
@using (Html.BeginForm()) {
<p>Do you like pizza?
@Html.DropDownListFor(x => x.likesPizza, new[] {
new SelectListItem() {Text = "Yes", Value = bool.TrueString},
new SelectListItem() {Text = "No", Value = bool.FalseString}
}, "Choose an option")
</p>
<input type = "submit" value = "Submit my answer" />
}
ฉันคิดว่าคำตอบนี้คล้ายกับของ Berat ตรงที่คุณใส่รหัสทั้งหมดสำหรับ DropDownList ของคุณโดยตรงในมุมมอง แต่ฉันคิดว่านี่เป็นวิธีที่มีประสิทธิภาพในการสร้างรายการแบบเลื่อนลง ay / n (บูลีน) ดังนั้นฉันจึงต้องการแบ่งปัน
หมายเหตุสำหรับผู้เริ่มต้น:
หวังว่านี่จะช่วยใครสักคน