C# 我知道怎么做,我已经在另一个项目中做过了,只是我觉得这和我在项目中经常做的事情不太一样,我教过我可以找到更好的解决方案。如果你还没有,看看knockoutjs列表绑定示例和代码。无论您是否绑定到“选择多个”,请选择!多个、ol、ul,甚至是一堆div,这使

C# 我知道怎么做,我已经在另一个项目中做过了,只是我觉得这和我在项目中经常做的事情不太一样,我教过我可以找到更好的解决方案。如果你还没有,看看knockoutjs列表绑定示例和代码。无论您是否绑定到“选择多个”,请选择!多个、ol、ul,甚至是一堆div,这使,c#,asp.net-mvc-3,model-binding,C#,Asp.net Mvc 3,Model Binding,我知道怎么做,我已经在另一个项目中做过了,只是我觉得这和我在项目中经常做的事情不太一样,我教过我可以找到更好的解决方案。如果你还没有,看看knockoutjs列表绑定示例和代码。无论您是否绑定到“选择多个”,请选择!多个、ol、ul,甚至是一堆div,这使得客户机代码在IMO中“更漂亮”?在MVC(.Net)中如何实现这一点?这看起来很像我做的,但是谢谢你的评论! <div class="row"> <div class="span12">


我知道怎么做,我已经在另一个项目中做过了,只是我觉得这和我在项目中经常做的事情不太一样,我教过我可以找到更好的解决方案。如果你还没有,看看knockoutjs列表绑定示例和代码。无论您是否绑定到“选择多个”,请选择!多个、ol、ul,甚至是一堆div,这使得客户机代码在IMO中“更漂亮”?在MVC(.Net)中如何实现这一点?这看起来很像我做的,但是谢谢你的评论!
<div class="row">
        <div class="span12">
            <div class="control-group">
                <label for="AddBusinessUnit" class="control-label">@Strings.BusinessUnit</label>
                <div class="controls">
                    <div class="input-append">
                        <input type="text" class="span2" size="16" id="AddBusinessUnit" />
                        <button class="btn" type="button" id="add-business-unit">@Strings.Add</button>
                    </div>
                </div>
            </div>

            <div class="control-group">
                <div class="controls">
                    @Html.ListBoxFor(model => model.BusinessUnits, SelectLists.BusinessUnits(Model.BusinessUnits, false), new { Multiple = "multiple" })<br/>
                    <a href="#" id="delete-business-unit">@Strings.DeleteSelectedElement</a>
                </div>
            </div>
        </div>
    </div>

    <div class="form-actions">
        <input type="submit" class="btn btn-primary" value="@Strings.Save" />
        <a href="@Url.Action(MVC.Company.Index())" class="btn">@Strings.Cancel</a>
    </div>
<script type="text/javascript">
$(document).ready(function () {

    $('#add-business-unit').click(function (e) {
        var bu = $('#AddBusinessUnit').val();
        if (bu != '') {
            $('#BusinessUnits').append($('<option></option>').val(bu).html(bu));
            $('#AddBusinessUnit').val('');
        }
        e.preventDefault();
    });

    $('#delete-business-unit').click(function (e) {
        $('#BusinessUnits :selected').remove();
        e.preventDefault();
    });

    $('input[type="submit"]').click(function () {
        $('#BusinessUnits option').attr('selected', 'selected');
    });

});
public static class SelectLists
    {
        public static IList<SelectListItem> BusinessUnits(IList<string> bussinessUnits, bool addEmpty, string selected = "")
        {
            var list = new List<SelectListItem>();
            if(addEmpty) list.Add(new SelectListItem());
            list.AddRange(bussinessUnits.Select(businessUnit => new SelectListItem {Selected = selected == businessUnit, Text = businessUnit, Value = businessUnit}));

            return list;
        }
    }