【发布时间】:2016-03-02 22:01:44
【问题描述】:
不知道是否有人可以指出正确的方向?
基本上,我正在尝试创建一个页面,以允许某人在多个 (18) 洞上输入数据(高尔夫),但基本上我不确定它是如何完成的。
在模型中我创建了以下内容:
namespace BGSociety.Models
{
public class CreateCourseHolesViewModel
{
public int holeNumber { get; set; }
public int par { get; set; }
public int si { get; set; }
public int distance { get; set; }
}
}
在我得到的控制器的 Index 事件中:
TempData["holes"] = getHoles();
protected List<CreateCourseHolesViewModel> getHoles()
{
var holes = new List<CreateCourseHolesViewModel>();
for (int i =1; i < 19; i++)
{
holes.Add(new CreateCourseHolesViewModel { holeNumber = i });
}
return holes;
}
我将其传递到视图中:
return PartialView("CreateCourseHoles", TempData["holes"]);
在视图中,我可以循环遍历列表并显示整数,每个数字旁边都有一个文本框,以允许输入 par、si 和 distance。
var zHoles = TempData["holes"] as IEnumerable<BGSociety.Models.CreateCourseHolesViewModel>;
foreach (var hole in zHoles)
{
<div class="row">
<div class="col-sm-1">
<p>@hole.holeNumber</p>
</div>
<div class="col-sm-6">
<div class="form-group">
<div class="col-xs-12">
@Html.ValidationMessageFor(m => hole.par)
@Html.TextBox("par", TempData["par"], new { @class = "form-control", placeholder = "Par", name = "Par" })
</div>
</div>
</div>
</div>
}
但我只是不知道如何将这个填充列表传递回控制器,以便我将数据输入数据库。
很有可能我走错了路(!),但如果有人能抽出几分钟的时间来提供帮助,那就太棒了!
谢谢, sx
【问题讨论】:
-
首先,您不能使用
foreach循环为集合项生成表单控件(请参阅this answer 以获得解释)。但是你做的其他很多事情都没有任何意义。并且不要使用TempData,在你的get方法中,你初始化你的集合并将它传递给视图。
标签: c# asp.net-mvc