[英]Binding Model to List nested model
我有很少的簡單屬性和一個嵌套的模型
public class GridViewModel
{
public property1 {get;set;}
...
public List<Grid> Grids { get; set; }
}
public class Grid
{
public int GridID { get; set; }
public string GridName { get; set; }
public string Description { get; set; }
...
}
在我看來,我正在遍歷Model.Grids並列出所有屬性。 當我將模型發布回控制器時,它返回null。 我遵循了Haacked關於如何綁定到列表的說明, http: //haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/我是否缺少某些內容? 在我看來,我嘗試使用HiddenFor,TextBoxFor,但是什么也沒回來
@for (int k = 0; k < Model.Grids.Count(); k++ )
{
@Html.HiddenFor(modelItem => Model.Grids[k].GridID)
@Html.TextBoxFor(modelItem => Model.Grids[k].GridID)
@Html.DisplayFor(modelItem => Model.Grids[k].GridName)
@Html.DisplayFor(modelItem => Model.Grids[k].Description)
}
HTML出來像
<input id="Grids_1__GridID" name="Grids[1].GridID" type="hidden" value="230">
<input id="Grids_2__GridID" name="Grids[2].GridID" type="hidden" value="231">
我忘了要提一個警告,我是通過ActionLink提交頁面的,該頁面傳遞了一個不同的參數。 我的模型空了,因為我沒有提交我的頁面,而是調用了一個動作。 我已經將鏈接更新為一個提交按鈕,該按鈕可以發布整個模型,並且現在工作正常。
//used before
@Html.ActionLink("Export Excel", "ExportToExcel", "Grid", new { GridID = "gridsid"}, new { id = "exportExcelLink" })
//switched to
<button type="submit" id="exportLink" name="exportBtn">[Export BTN]</button>
由於您要回發HiddenFor
和TextBoxFor
因此默認活頁夾可能會造成混亂。 我只是嘗試:
@for (var k = 0; k < Model.Grids.Count(); k++)
{
@Html.HiddenFor(m => m.Grids[k].GridID)
}
確保它是零索引的,您應該一切順利。
另外,請注意,我使用m
來索引,而不是Model
。
//define int variable
int i=0;
@foreach (var item in Model.Grids)
{
@Html.HiddenFor(m=> m.Grids[i].GridID)
@Html.TextBoxFor(m=> m.Grids[i].GridID)
@Html.DisplayFor(m=> m.Grids[i].GridID)
@Html.DisplayFor(m=> m.Grids[i].GridID)
i=i+1;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.