c# – 如何将视图中的列表传递给控制器​​?

前端之家收集整理的这篇文章主要介绍了c# – 如何将视图中的列表传递给控制器​​?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个视图,在里面我正在生成一个列表,但是我没有能够成功地将它传递给控制器​​而没有字段为null:

我的观点代码

@using (Html.BeginForm("AddFOP","Revenue",null,FormMethod.Post,new { enctype = "multipart/form-data" }))
           {
              <table class="grid" style="margin-top: 15px">
                    <thead>
                        <tr>
                            <th>FOP</th>
                            <th>ORGN</th>
                            <th>PROGRAM</th>
                            <th>PERCENTAGE</th>
                            <th></th>

                        </tr>
                    </thead>
                    <tbody>               
                        @for (int i = 0; i < Model.editBillingFOPList.Count;i++ )
                        { 

                         <tr>
                            <td>@Html.TextBox("FOPList[" + @i + "].Fund",Model.editBillingFOPList[i].Fund)</td>
                            <td>@Html.TextBox("FOPList[" + @i + "].ORGN",Model.editBillingFOPList[i].ORGN)</td>
                            <td>@Html.TextBox("FOPList[" + @i + "].Program",Model.editBillingFOPList[i].Program)</td>
                            <td>@Html.TextBox("FOPList[" + @i + "].Percentage",Model.editBillingFOPList[i].Percentage)</td>
                        </tr>

这是控制器:

[HttpPost]
        public ActionResult AddFOP(List<BillingFOPModel> FOPList)
        {


            return View();
        }

我的FOPList显示计数为1,如果我在调试模式下展开它,它会显示模型列表但是具有空值 – 任何想法?

我的型号:

public class BillingFOPModel
    {
        public string BillingArea;
        public string BillingAreaName;
        public string Fund;
        public string ORGN;
        public string Program;
        public string Percentage;
    }

这是我的viewmodel:

public class EditBillingviewmodel
        {   //declare attributes

            public List<BillingFOPModel> editBillingFOPList { get; set; }
            public string newBillingArea { get; set; }
            public string newBillingAreaName { get; set; }
            public string newFund { get; set; }
            public string newORGN { get; set; }
            public string newProgram { get; set; }
            public string newPercentage { get; set; }

            public EditBillingviewmodel()
            {

            }

            //constructor that passes a list and 2 strings
            public EditBillingviewmodel(List<BillingFOPModel> editBillingFOPList,string newBillingArea,string newBillingAreaName)
            {
                this.editBillingFOPList = editBillingFOPList;
                this.newBillingArea = newBillingArea;
                this.newBillingAreaName = newBillingAreaName;
            }

解决方法

你犯的是mvc的新开发者大多数做的同样的错误,你的模型有字段而不是属性,这就是你没有发布数据的原因.

将字段更改为Model类中的属性

public class BillingFOPModel
{
    public string BillingArea {get; set; }
    public string BillingAreaName { get; set;}
    public string Fund { get; set;}
    public string ORGN { get; set;}
    public string Program {get; set;}
    public string Percentage {get; set;}
}

边注:

尽可能使用强类型的助手,如TextBoxFor(),DropDownListFor().

猜你在找的C#相关文章