我正在使用一个对象但在对象内部我有一个属性是一个对象列表.我希望将该对象与其中的列表对象一起传递,但是当我提交表单时列表为空.我不知道如何处理这个问题.
类
public class VSTAttendance
{
public int MemberID { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public bool Attendant { get; set; }
}
public class ServiceAttendance
{
public int AttendanceID { get; set; }
public int AttendanceTypeID { get; set; }
public string AttendanceType { get; set; }
public DateTime Service { get; set; }
public int ServiceID { get; set; }
public string Speaker { get; set; }
public string Location { get; set; }
public int HeadCount { get; set; }
public int CategoryID { get; set; }
public string Description { get; set; }
public string ChurchNotes { get; set; }
public string ServingNotes { get; set; }
public DateTime DateCreated { get; set; }
public DateTime CreatedBy { get; set; }
public DateTime DateUpdate { get; set; }
public DateTime UpdateBy { get; set; }
public List<VSTAttendance> MemberAttendance { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
HTML
@using (Html.BeginForm("Attendance", "Home", FormMethod.Post, new { ReturnUrl = ViewBag.ReturnUrl, @class = "form-horizontal", role = "form" }))
{
<div class="form-group">
<label for="inputSpeaker" class="col-sm-2 control-label">
Speaker</label>
<div class="col-sm-6">
@Html.TextBoxFor(m => m.Speaker, new { @class = "form-control", placeholder = "Speaker", type = "text", required = "required " })
</div>
</div>
<table class="table table-bordered table-condensed table-hover">
<tr class="warning">
<td></td>
<td>Name</td>
<td>Surname</td>
</tr>
@foreach (var item in Model.MemberAttendance)
{
<tr>
<td>@Html.CheckBox("Attendant")</td>
<td>@item.Name</td>
<td>@item.Surname</td>
</tr>
}
</table>
<div class="form-group">
<div class="col-sm-10">
<button type="submit" class="btn btn-info">
<span class="glyphicon glyphicon-ok"></span>Submit</button>
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*nex 14
您必须使用而不是foreach并使用Hidden for.我测试了以下内容并且完美无缺
@model ServiceAttendance
@{
ViewBag.Title = "Attendance";
}
<h2>Attendance</h2>
@using (Html.BeginForm())
{
<div class="form-group">
<label for="inputSpeaker" class="col-sm-2 control-label">
Speaker
</label>
<div class="col-sm-6">
@Html.TextBoxFor(modelItem => modelItem.Speaker)
</div>
</div>
<table class="table table-bordered table-condensed table-hover">
<tr class="warning">
<td></td>
<td>Name</td>
<td>Surname</td>
</tr>
@for (int i=0;i<Model.MemberAttendance.Count ;i++)
{
<tr>
<td>@Html.CheckBoxFor(it=>Model.MemberAttendance[i].Attendant)
@Html.HiddenFor(it => Model.MemberAttendance[i].Attendant)
</td>
<td>@Model.MemberAttendance[i].Name
@Html.HiddenFor(it => Model.MemberAttendance[i].Name)</td>
<td>@Model.MemberAttendance[i].Surname
@Html.HiddenFor(it=>Model.MemberAttendance[i].Surname)</td>
</tr>
}
</table>
<div class="form-group">
<div class="col-sm-10">
<button type="submit" class="btn btn-info">
<span class="glyphicon glyphicon-ok"></span>Submit
</button>
</div>
</div>
}
Run Code Online (Sandbox Code Playgroud)
所以你要做的就是用以下内容替换foreach
@for (int i=0;i<Model.MemberAttendance.Count ;i++)
{
<tr>
<td>@Html.CheckBoxFor(it=>Model.MemberAttendance[i].Attendant)
@Html.HiddenFor(it => Model.MemberAttendance[i].Attendant)
</td>
<td>@Model.MemberAttendance[i].Name
@Html.HiddenFor(it => Model.MemberAttendance[i].Name)</td>
<td>@Model.MemberAttendance[i].Surname
@Html.HiddenFor(it=>Model.MemberAttendance[i].Surname)</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19994 次 |
| 最近记录: |