首页 > 解决方案 > 绑定下拉列表 asp.net mvc

问题描述

我用我的数据库中的数据填充了一个下拉列表。但是,我不确定我的方法是否有效。我可以做些什么来改善这一点,或者我使用的方法是否安全/足够?

我在下面添加了控制器、viewModel 和 View。非常感谢所有建议!

控制器:

 [HttpGet]
    public ActionResult SchedulerIndex()
    {
        Entities entities = new Entities();

        var getJobList = entities.Jobs.ToList();
        SelectList list = new SelectList(getJobList, "JobId", "JobName");
        ViewBag.jobListName = list;


    [HttpPost]
    public ActionResult ScheduleInfo(Values model, int JobList1, string Second, string Minute, string Hour, object DayOfMonth, object Month, object DaysOfWeek, int repeatTime)
    {
        model.Job = JobList1;

看法:

    @using (Html.BeginForm("ScheduleInfo", "Scheduler", FormMethod.Post))
{
    Html.EnableClientValidation();
<center>
    <div style="text-align: center">
        <div class="form-group">
            <h4>Select a job from the list</h4>
            @Html.DropDownList("JobList1", ViewBag.jobListName as SelectList)
        </div>
    </div>
</center>

视图模型:

    public class Values
{

    public List<object> DayOfMonth { get; set; }
    public List<object> Month { get; set; }
    public List<object> DaysOfWeek { get; set; }



    [Required(ErrorMessage = "Enter a number between 0-59!")]
    [RegularExpression(@"^(,{0,1}(\b\d\b|[0-5][0-9]|\*+)(-\b\d\b|-[0-5][0-9]){0,1})$", ErrorMessage = "Enter a number between 0-59!")]
    public object Second { get; set; }


    [Required(ErrorMessage = "Enter a number between 0-59!")]
    [RegularExpression(@"^(,{0,1}(\b\d\b|[0-5][0-9]|\*+)(-\b\d\b|-[0-5][0-9]){0,1})$", ErrorMessage = "Enter a number between 0-59!")]
    public object Minute { get; set; }


    [Required(ErrorMessage = "Enter a number between 0-23!")]
    [RegularExpression(@"^(,{0,1}(\b\d\b|[0-1][0-9]|[2][0-3]|\*+)(-\b\d\b|-[0-1][0-9]|-[2][0-4]){0,1})$", ErrorMessage = "Enter a number between 0-23!")]
    public object Hour { get; set; }


    //public List<SelectListItem> Jobs { get; set; }
    public int Job { get; set; }

    public List<Values> DofMInfo { get; set; }
    public string DofMNo { get; set; }
    public int DofMID { get; set; }

    public List<Values> MonthInfo { get; set; }
    public int monthID { get; set; }
    public string monthName { get; set; }


    public List<Values> DayInfo { get; set; }
    public int dayID { get; set; }
    public string dayName { get; set; }

    [Required(ErrorMessage ="Enter the number of repeat times. 0 = execute once!")]
    public int repeatTime { get; set; }

    public bool IsChecked { get; set; }
}

标签: c#asp.net-mvcdrop-down-menubinding

解决方案


您现在的方式也可以,但不推荐,因为您使用 viewbag 来保留值并传递值,因此您需要创建如下所示的强类型模型。

在模型中创建一个新的 SelectListItem,如下所示,

public IEnumerable<SelectListItem> getJobList { get; set; }

在控制器中

将列表值分配给 getJoblist selectedlistitem 而不是 viewbag。

然后在视图中将模型数据与下拉列表绑定。

@Html.DropDownListFor(model => model.jobList1, Model.getJobList)

推荐阅读