C# 通过';列表';在视图中建模和建模
不知是否有人能给我指出正确的方向 基本上,我正在尝试创建一个页面,允许某人输入数据(高尔夫)的数量(18)的洞,基本上我不确定它是如何做到的 在模型中,我创建了以下内容:C# 通过';列表';在视图中建模和建模,c#,asp.net-mvc,C#,Asp.net Mvc,不知是否有人能给我指出正确的方向 基本上,我正在尝试创建一个页面,允许某人输入数据(高尔夫)的数量(18)的洞,基本上我不确定它是如何做到的 在模型中,我创建了以下内容: namespace BGSociety.Models { public class CreateCourseHolesViewModel { public int holeNumber { get; set; } public int par { get; set; } public int si {
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; }
}
}
在控制器的索引事件中,我得到:
TempData[“holes”]=getHoles()
protectedlist getHoles()
{
var holes=新列表();
对于(int i=1;i<19;i++)
{
添加(新的CreateCourseHolesViewModel{holeNumber=i});
}
回流孔;
}
我将此信息传递到视图中:
返回PartialView(“CreateCourseHoles”,TempData[“holes”])
在视图中,我可以循环遍历列表,并在每一个文本框旁边显示一个文本框,以允许输入PAR、SI和距离。
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>
}
var zHoles=TempData[“holes”]作为IEnumerable;
foreach(Z孔中的var孔)
{
@hole.holeNumber
@Html.ValidationMessageFor(m=>hole.par)
@TextBox(“par”,TempData[“par”],new{@class=“form control”,placeholder=“par”,name=“par”})
}
但我就是不知道如何将这个填充的列表传递回控制器,以便将数据输入数据库
我很有可能是走错了方向(!),但如果有人能抽出几分钟来帮忙,那就太好了
谢谢,
SxTempData不能作为参数传递给PartialView。即使您不将其作为参数传递;您仍然可以访问它。我建议您改为这样做:
return PartialView("CreateCourseHoles", getHoles());
那你就可以有你的局部观点了
@model IEnumerable<BGSociety.Models.CreateCourseHolesViewModel>
@model IEnumerable
并将所有for循环包装为一个表单:
<form method="post" action="wherever you want to post it to">
foreach (var hole in Model)
{
<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>
}
</form>
foreach(模型中的var孔)
{
@hole.holeNumber
@Html.ValidationMessageFor(m=>hole.par)
@TextBox(“par”,TempData[“par”],new{@class=“form control”,placeholder=“par”,name=“par”})
}
为这句话干杯,但我仍然看不到模型中的18组数据,我只能看到第一组。当它被发回控制器时,我的意思是首先,您不能使用foreach
循环为集合项生成表单控件(请参阅说明)。但你做的其他事情没有任何意义。不要使用TempData
,在get方法中,初始化集合并将其传递给视图。
<form method="post" action="wherever you want to post it to">
foreach (var hole in Model)
{
<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>
}
</form>