MVC 5 Razor for循环不渲染HiddenFor

时间:2016-06-06 21:26:55

标签: c# asp.net-mvc razor

我正在学习新的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" })                
        }
    }                
}

1 个答案:

答案 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 }))                
            }
        }                
    }