追加我的控制器方法的结果,我的选择下拉列表MVC

问题描述:

我有这样的代码在我的控制器:追加我的控制器方法的结果,我的选择下拉列表MVC

public ActionResult GetTimeOptions(string Date, int SiteID) 
    { 
     DateTime pickUpDate = Convert.ToDateTime(Date); 
     Site site = SiteMgmt.GetSite(SiteID); 
     DateTime startTime = DateTime.MinValue; 
     DateTime endTime = DateTime.MinValue; 

     switch (pickUpDate.DayOfWeek) 
     { 
      case DayOfWeek.Sunday: 
       startTime = site.OOSunStart; 
       endTime = site.OOSunEnd; 
       break; 
      case DayOfWeek.Monday: 
       startTime = site.OOMonStart; 
       endTime = site.OOMonEnd; 
       break; 
      case DayOfWeek.Tuesday: 
       startTime = site.OOTueStart; 
       endTime = site.OOTueEnd; 
       break; 
      case DayOfWeek.Wednesday: 
       startTime = site.OOWedStart; 
       endTime = site.OOWedEnd; 
       break; 
      case DayOfWeek.Thursday: 
       startTime = site.OOThuStart; 
       endTime = site.OOThuEnd; 
       break; 
      case DayOfWeek.Friday: 
       startTime = site.OOFriStart; 
       endTime = site.OOFriEnd; 
       break; 
      case DayOfWeek.Saturday: 
       startTime = site.OOSatStart; 
       endTime = site.OOSatEnd; 
       break; 
      default: 
       break; 
     } 

     if(startTime > endTime) 
     { 
      endTime = endTime.AddDays(1); 
     } 

     List<string> results = new List<string>(); 
     if (pickUpDate.Date == DateTime.Now.Date) 
     { 
      if (startTime.TimeOfDay < DateTime.Now.TimeOfDay) 
      { 
       startTime = DateTime.Now.AddMinutes(site.leadTime); 
      } 
     } 

     DateTime tempTime = startTime; 

     do 
     { 
      tempTime = tempTime.AddMinutes(15); 
      results.Add(tempTime.TimeOfDay.ToString()); 
     } 
     while (tempTime <= endTime); 

     View().ViewData["availableTimes"] = results; 


     return View(); 
    } 

而且此代码的​​工作只是我需要它的方式。我需要从

View().ViewData["availableTimes"] = results; 

附加到我的选择列表中。以下是我的选择列表:

$('#timepicker').append($('<option>', 
     { 
     value: View().ViewData["availableTimes"] = results, 
     text : results 
     })); 
    }); 

此代码不起作用。我怎样才能追加控制器的结果?我知道控制器方法运行,因为我已经通过它并看到结果生成我需要的选项。任何帮助都很棒。谢谢!

您应该使用Razor sintax填充项目下拉列表。

  1. 创建@Html
  2. 数据绑定到组合框组合框列表

是这样的:

@ Html.DropDownListFor(M => m.SelectedItem,Model.ListOfItems, null,new {@class =“form-control1 col-sm-8”})

其中ListOfItems应加载组合框值并绑定到下拉列表。

+0

所以我其实没有模型。我只有控制器和我的观点。如何在没有模型的情况下实现它? @dkkd –

+0

您应该创建带有两个字段的模型:public IEnumerable AvailableDates {get;组; }和 public Date SelectedDate {get;组; }和控制器填充模型对象与所有可用的日期数据,并选择所需的日期,当你调用控制器动作和视图呈现它会自动加载所有数据组合框和选定的值将被选中组合框内。 – dkkd

+0

我对控制器和型号没有太多经验。你能写出你的意思吗?此外,所有可用的日期数据都是动态的。 –

你可以这样实现它:

  1. 创建模型并将其命名为DateViewModel.cs

    公共类DateViewModel { 公共IEnumerable的AllDates {获得;组; } public String SelectedDate {get;组; }

    }

  2. 在你的控制器创建此:

    公众的ActionResult GetTimeOptions(){ DateViewModel dateModel =新DateViewModel();

    dateModel.AllDates = new[] 
        { 
         new SelectListItem { Value = "1", Text = "2017-01-22" }, 
         new SelectListItem { Value = "2", Text = "2017-01-23" }, 
         new SelectListItem { Value = "3", Text = "2017-01-25"} 
        }; 
    
        dateModel.SelectedDate = "2"; 
    
        return View(dateModel); 
    } 
    

我们首先创建,并与负载值列表,然后把选择的日期为2

  1. 在您的视图把这个:
    • 在页面的顶部把这个:
  2. @using YourAppName。模型 @model DateViewModel

    并创建具有剃刀语法列表:第一参数是从模型选择的项目和第二列表是与绑定到组合框控件

    @ Html.DropDownListFor(M => m.SelectedDate所有项目,Model.AllDates)

    1. 启动您的应用程序,您应该使用这3个日期加载组合框,并选择默认选择的一个。
开始=>