我有查看模型:
public class AvailableTimesViewModel
{
public AvailableTimesViewModel() { }
public AvailableTimesViewModel(List<DateTime> list)
{
availableTimesList = new List<DateTime>();
if (list != null && list.Any())
{
foreach (var l in list)
{
availableTimesList.Add(l);
}
}
}
public List<DateTime> availableTimesList { get; set; }
}
我的观点:
@model ViewModels.AvailableTimesViewModel
@{
ViewBag.Title = "AvailableTimes";
}
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
List<DateTime>avTimes=new List<DateTime>
@for (var i = 0; i < Model.availableTimesList.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(x => x.availableTimesList[i])
@Model.availableTimesList[i].TimeOfDay
@Html.ActionLink("Book", "BookVisit", new { date = Model.availableTimesList[i].TimeOfDay, avTimes = Model.availableTimesList },null) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
</td>
</tr>
}
</table>
和控制器:
public ActionResult BookVisit(DateTime date,List<DateTime> avTimes)
{
return View();
}
问题是:如何从ActionLink(avTimes = Model.availableTimesList)向控制器发送第二个参数。换句话说 - 如何将视图中呈现的列表发送到控制器。
答案 0 :(得分:0)
首先,在将其作为路由数据值传递之前,您不需要初始化或定义avTimes
。
不需要这一行:
List<DateTime>avTimes = new List<DateTime>
话虽如此,您无法将集合作为路径数据值传递 - 它无效但无论如何都不是最佳实践。
由于@Html.ActionLink
会生成http://domainname.com/bookvisit/book?abc=1&bcd=ldf&ctf=5
之类的链接,因此我不认为在网址中附加完整的列表值是一种很好的做法。
您尝试做的事情可以通过以下方式实现:
@{var myObjectWrapper = new MyObjectWrapper(){Data = @Model.availableTimesList };}
@Html.Action("Book", "BookVisit",
new { date = Model.availableTimesList[i].TimeOfDay, avTimes = myObjectWrapper } ,null)
你的行动方法:
public ActionResult BookVisit(DateTime date, MyObjectWrapper avTimes)
{
vat myList = avTimes.Data;
return View();
}
希望有所帮助。
答案 1 :(得分:-1)
添加您的&#34;列表&#34;到AvailableTimesViewModel
<form>
然后将此作为您的模型。
您还应该使用局部视图来显示您的可用时间。