0

ドロップダウンリストから以前に選択したアイテムを表示したかったのです。これまでのところ、以前にドロップダウンから選択したアイテムのIDのみが表示されます。ID番号ではなく、アイテムのテキスト/説明名を取得したいのですが。

これは私が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)%>

ページを実行して表示すると、説明ボックスが表示されます:4あるべきときに:インターンシップ

4

2 に答える 2

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); }
    );
});
于 2012-04-23T18:51:27.223 に答える
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)%>
于 2012-04-23T21:46:25.183 に答える