2012-04-23 3 views
0

Я хотел отобразить ранее выбранный элемент из выпадающего списка. С тем, что у меня есть до сих пор, я получаю только идентификатор элемента, выбранного из раскрывающегося списка ранее. Я хотел бы получить текст/описание имени элемента, а не его идентификационный номер.текст строки отображения, а не идентификатор элемента

Это то, что я имею в ViewModel:

[LocalizedDisplayName("BillingRate", NameResourceType = typeof(User))] 
    public short BillingRateId { get; set; } 

    [UIHint("DropDownList")] 
    [DropDownList(DropDownListTargetProperty = "BillingRateId")] 
    public IEnumerable<SelectListItem> BillingRates { get; set; } 

Это то, что я имею в .ascx страницу формы:

<%:Html.LabelFor(m => m.BillingRateId)%> 
<%:Html.EditorFor(m => m.BillingRateId, Model.BillingRates)%> 
<%:Html.ValidationMessageFor(m => m.BillingRateId)%> 

Когда я бегу и просматривать страницы я получаю в описании box: 4 , когда это должно быть: Стажировка

ответ

1

Вы можете сделать простой сервис, который вернет именно эту строку, а затем использовать jQuery AJAX для ее заполнения.

public ContentResult GetBillingRate(int id) 
{ 
    //get your billing rate 
    return this.Content(billing_rate_string, "text/plain"); 
} 

Затем в JavaScript:

$('#BillingRateId').change(function() { 
    $.get('@Url.Action("GetBillinRate", "YourController")/' + $(this).val(), 
     function(data) { $('#element_you_want_it_to_show_in').html(data); } 
    ); 
}); 
+0

Спасибо за совет я держать записку на нем, но для моих целей, которые будут много меняется вокруг. Я хотел больше обходного пути, основанного на том, что у меня есть. благодаря – Masriyah

0

Другой подход должен был бы сделать свой собственный IEnumerable и толкать, что в вашем DropDownList вместо этого.

В контроллере:

// this is assuming you can get objects with both name/id for your billing rates 
ViewBag.BillingRates = Db.GetBillingRatesAndNames() 
    .Select(x => new SelectListItem() { Text = x.Name, Value = x.Id.ToString() }); 

В Вид:

<%:Html.EditorFor(m => m.BillingRateId, 
    (IEnumerable<SelectListItem>)ViewBag.BillingItems)%> 
Смежные вопросы