我正在学习新的MVC 5,而我对这个想法的想法不足。我有一个Razor视图,它不会在if语句包含的for循环中呈现@ Html.HiddenFor。我也尝试删除for循环,只留下if语句,它仍然不会渲染。如果我删除它们,它会正确呈现。
非常感谢任何帮助。
这里是缩写代码 - 模型' SelectedFields
列表填充在控制器中:
型号:
public class MaintModel
{
public List<SourceField> SelectedFields{ get; set; }
}
public class SourceField
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private int columnOrder;
public int ColumnOrder
{
get { return columnOrder; }
set { columnOrder = value; }
}
}
剃刀代码:
@using TOTestMgmt
@model TOTestMgmt.Models.MaintModel
@using (Html.BeginForm("InsertDataSet", "DataSetMaint", FormMethod.Post))
{
if (Model != null && Model.SelectedFields!= null)
{
for (int i = 0; i < Model.SelectedFields.Count; i++)
{
@Html.HiddenFor(model => model.InsertDataSetSelFields[i].Id, new { id = "kevtest1" })
@Html.HiddenFor(model => model.InsertDataSetSelFields[i].ColumnOrder, new { id = "kevtest2" })
@Html.HiddenFor(model => model.DataSetSource, new { id = "DataSetSourceHidden1" })
}
}
}
答案 0 :(得分:0)
@Html.HiddenFor
仅适用于当前页面模型。我的意思是
@model TOTestMgmt.Models.MaintModel
此外,我还更改了生成id属性的逻辑,因为Id属性在页面上必须是唯一的。
@using TOTestMgmt
@model TOTestMgmt.Models.MaintModel
@using (Html.BeginForm("InsertDataSet", "DataSetMaint", FormMethod.Post))
{
if (Model != null && Model.SelectedFields!= null)
{
for (int i = 0; i < Model.SelectedFields.Count; i++)
{
@Html.HiddenFor(model => Model.SelectedFields[i].Id, new { id = "kevtest" + i })
@Html.HiddenFor(model => Model.SelectedFields[i].ColumnOrder, new { id = "kevtestColumn" + i }))
}
}
}