【发布时间】:2016-04-02 22:41:50
【问题描述】:
我尝试了很多解决方案,例如this、this 和this。但是,它不起作用,因为其他示例使用ViewBag,但我使用的是ViewModel。
我有ScheduleViewModel:
public class ScheduleViewModel
{
public int[] SelectedValues { get; set; }
public IEnumerable<SelectListItem> Values { get; set; }
public Schedule OneSchedule { get; set; }
}
控制器动作List:
public ActionResult List(ScheduleViewModel scheduleVM)//scheduleVM is always NULL
{
var model = new ScheduleViewModel();
IList<SelectListItem> listTime = new List<SelectListItem>();
DateTime time = DateTime.Today;
for (DateTime _time = time; _time < time.AddDays(5); _time = _time.AddDays(1)) //from 16h to 18h hours
{
listTime.Add(new SelectListItem() { Value = _time.ToShortDateString(), Text = _time.ToShortDateString() });
}
model.Values = listTime;
return View(model);
}
和视图:
model CinemaAppl.WebUI.Models.ScheduleViewModel
@using (Html.BeginForm())
{
<p>
@Html.DropDownListFor(m => m.SelectedValues, Model.Values)
<input type="submit" value="Filter" />
</p>
}
如何通过按钮单击将 DropDownList 的 SelectedValue 从视图正确发送到控制器? 是否可以在没有 AJAX 和创建 POST 方法的情况下发送值?如果不行,可以使用AJAX或POST的方法。
我想要的是:
我想要DropDownListFor,我可以在其中只选择一个DateTime 值,我可以发送到ActionResult List()。
我可以看到所有DateTime 值:
【问题讨论】:
-
是可以不用ajax发送。你试过没有 ajax 吗?当您使用 ajax 代码时,您是否遇到了问题(发布的对象为空)?如果是,您应该在问题中包含您的相关代码,该代码在问题中发布 ajax。
-
你有一组选定的值,所以我认为你想要的是
MultiSelectList而不是SelectListItem。如果没有,那么只需摆脱数组并使用 int。 -
@MartinMazzaDawson 不,仅从 /drop/downList 中选择一项
-
@Shyju 我试过不使用 AJAX 并且发布的值始终是
null。 -
那么你的属性需要
string SelectedValues或者(更好)DateTime SelectedValues)(虽然我建议你把它重命名为SelectedDate)
标签: c# asp.net asp.net-mvc html.dropdownlistfor