2015-06-26 2 views
0

я следующие модели (упрощенный), используемые внутри CodeFirst scaffolded сайт MVC ASP.NET:CodeFirst выберите свойство, которое будет отображаться внутри Html.DropdownList

public class Order 
{ 
    public Guid ID {get; set; } 

    [DatabaseGenerated(DatabaseGeneratedOption.Identity), Display(Name = "Order Number")] 
    public int Number { get; set; } 

    public DateTime Date { get; set; } 
} 

public class OrderLine 
{ 
    public Guid ID { get; set; } 

    public Guid OrderID { get; set; } 
    public virtual Order Order { get; set; } 
} 

Order не содержит свойство строки, поэтому в Edit зрения OrderLine идентификатор GUID отображается в раскрывающемся списке, но я хочу, чтобы отобразить Number свойство вместо

<div class="form-group"> 
    @Html.LabelFor(model => model.OrderID, "Order Number", htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.DropDownList("OrderID", null, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.OrderID, "", new { @class = "text-danger" }) 
    </div> 
</div> 

Это можно определить на уровне модели, какое свойство следует рассматривать для отображения внутри г ropdown или который является синтаксисом помощника DropDownList, чтобы указать текст в этом сценарии?

+0

** Какой синтаксис для DropDownList? ** [Здесь] (https://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlist (v = vs.118)) .aspx) является ссылкой, которая содержит различные перегруженные методы из msdn –

+0

вы не можете написать пример, который действительно работает в моем случае? – user35912

ответ

2

Это можно определить на уровне модели, какое свойство следует рассматривать для отображения в раскрывающемся списке

Вы можете создать экземпляр SelectList и передали его DropDownList методе Html класса Helper следующим образом:

ViewBag.Orders = new SelectList(db.Orders // select Orders from databse here 
       , "OrderID" // value property inside the order class 
       , "Name"); // display text property in the dropdown 

и использовать его в целях, как показано ниже

@Html.DropDownList("OrderID", ViewBag.Orders as SelectList, htmlAttributes: new { @class = "form-control" }); 
+0

нет другого пути? действительно, мне нужно положить все элементы внутри ViewBag именно для этого? – user35912

+0

@ user35912 Вы можете передать его вместе с моделью. Любые способы передачи данных между просмотром и контролем несколькими способами см. Здесь [ссылка] (http://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/various-ways-to-pass-data-from-controller- на просмотр-в-MVC /) –

Смежные вопросы