2012-04-23 74 views
0

我想從下拉列表中顯示先前選擇的項目。到目前爲止,我只得到從以前的下拉列表中選擇的項目的ID顯示。我想獲取該項目的文本/描述名稱而不是其ID號碼。顯示字符串文本而不是項目ID

這就是我對視圖模型:

[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)%> 

當我運行和查看網頁在說明中得到框: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 2012-04-23 20:06:29

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() }); 

在View:

<%:Html.EditorFor(m => m.BillingRateId, 
    (IEnumerable<SelectListItem>)ViewBag.BillingItems)%> 
相關問題