mvc中下拉框如何绑定枚举值

        一般的BS程序开发中,习惯了使用asp.net控件在后台直接绑定数据,可是最近遇到了一个问题,在mvc中,如何在前台绑定后台数据呢?

       以前,我们都是直接在前台页面列举数据如下:

<SOA:HBDropDownList ID="ddlReadState" runat="server" Width="200px">
      <asp:ListItem Text="请选择" Value="-1"></asp:ListItem>
      <asp:ListItem Text="已完成" Value="1"></asp:ListItem>
      <asp:ListItem Text="未完成,已知晓" Value="0"></asp:ListItem>
</SOA:HBDropDownList>
        或者直接在后台使用下拉框控件ID绑定数据源。

this.ddlReadState.DataSource = List<State>;
        可是在mvc中,controller中是不能直接使用控件ID来进行数据绑定的,只能在前台进行数据绑定。那怎么实现数据更新呢?

model代码:

public class SignQuoteFormViewModel : WfDataViewModelBase<SignQuoteForm>
    {
        public string ReadState { get; set; }
        public string ReadRemark { get; set; }
        
        public  List<SelectListItem> GetSelectList()
       {
               List<SelectListItem> list = new List<SelectListItem>
               {
                   new SelectListItem{Text="请选择",Value="-1"},
                   new SelectListItem{Text="已完成",Value="0"},
                   new SelectListItem{Text = "未完成,请知晓",Value ="1"}
               };
               return list;
       }
    }

    public enum selectListStatus
    {
        /// <summary>
        /// 已完成
        /// </summary>
        [EnumItemDescription("已完成")]
        NoFinish = 0,

        /// <summary>
        ///未完成
        /// </summary>
        [EnumItemDescription("未完成")]
        Finished = 1
    }
前台数据绑定:

<div style="padding:15px;border-radius:0;" class="panel-body">
                @Html.ViewComponent().DropDownList(Html, m => m.ReadState, Model.GetSelectList(), new { @class = "form-control" })
            </div>
效果图如下:

技术分享




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。