查看
@if (weekMaster != null)
{
using (Html.BeginForm("UpdatePlan", "generalPlan", FormMethod.Post, new { }))
{
<table class="table-bordered">
<tr>
@foreach (TermMaster obj in weekMaster.ToList())
{
<td align="center">
<span> @obj.termStartDate.ToString("dd MMM") - @obj.termEndDate.ToString("dd MMM")</span>
<br />
<input type="hidden" name="ObjHid" value="@obj" />
<input type="hidden" name="startDate" value="@obj.termStartDate" />
<input type="hidden" name="endDate" value="@obj.termEndDate" />
<input type="text" style="width:80%" name="weekSession" />
</td>
}
<td>
<input type="submit" value="Update" class="btn-primary" />
</td>
</tr>
</table>
} }
控制器
[HttpPost]
public ActionResult UpdatePlan(List<DateTime> startDate, List<DateTime> endDate, List<int> weekSession, List<TermMaster> ObjHid)
{
return View();
}
我正在尝试使用输入法Class Object from View to Controller
在TermMaster类上传递<input type="hidden" name="ObjHid" value="@obj" />
,但如果传递单个值NULL
和startDate
则显示endDate
值它工作正常。
我的代码有什么问题?如何在Post方法中传递类对象List?
答案 0 :(得分:1)
你必须通过以下方法来实现。
创建模型而不是多个参数,并在cshtml中使用index。
public class model
{
public List<DateTime> startDate { get; set; }
public List<DateTime> endDate { get; set; }
public List<int> weekSession { get; set; }
public List<TermMaster> ObjHid { get; set; }
}
CSHTML
@{ int i = 0; }
@foreach (TermMaster obj in weekMaster.ToList())
{
<td align="center">
<span> @obj.termStartDate.ToString("dd MMM") - @obj.termEndDate.ToString("dd MMM")</span>
<br />
<input type="hidden" name="ObjHid[@i].termStartDate" value="@obj.termStartDate.ToString("dd MMM")" />
<input type="hidden" name="ObjHid[@i].termStartDate" value="@obj.termStartDate.ToString("dd MMM")" />
<input type="hidden" name="startDate[@i]" value="@obj.termStartDate" />
<input type="hidden" name="endDate[@i]" value="@obj.termEndDate" />
<input type="text" style="width:80%" name="weekSession[@i]" />
</td>
i++
}
答案 1 :(得分:0)
您无法通过输入将对象绑定到控制器。您可以将对象序列化为json。在控制器中,您可以将输入值作为字符串并反序列化。