我正在開發一個Asp.Net MVC 5應用程序。在這裏,我必須顯示一個表格,其列數將在運行時生成,即列數不固定。所以,我創建了一個數據表,按照下圖顯示的是對我的看法 -綁定一個動態數據表來查看並獲取HttpPost方法中的數據表
@model MyApps.MyModClass
@using (Html.BeginForm())
{
<table>
<thead>
<tr>
@{
for (int i = 0; i < Model.dtTable .Columns.Count; i++)
{
<th>
@Html.DisplayFor(item => Model.dtTable.Columns[i].ColumnName)
</th>
}
}
</tr>
</thead>
<tbody>
@foreach (System.Data.DataRow row in Model.dtTable.Rows)
{
<tr>
@foreach (System.Data.DataColumn col in Model.dtTable.Columns)
{
if (col.DataType == Type.GetType("System.Boolean"))
{
<td>
@{
bool val = Convert.ToBoolean(@row[col.ColumnName]);
}
@Html.CheckBox("Vote", val)
</td>
}
else
{
<td>
@row[col.ColumnName]
</td>
}
}
</tr>
}
</tbody>
</table>
<input type="submit" value="Save Result" />
}
在我的控制器,HTTPGET而HttpPost方法 -
[HttpGet]
public ActionResult Tally(int id)
{
MyModClass cls = new MyModClass();
cls.dtTable = cls.BuildTable(id);
return View(cls);
}
[HttpPost]
public ActionResult Tally(MyModClass cls)
{
return View();
}
正如您在查看代碼中看到有一些複選框列。用戶將檢查或取消簽入這些單元格。這個完整的結果我必須發送給控制器。在我的HttpPost方法中,我獲取MyModClass的對象,但其中的數據表空間爲空。 我知道單元格值不綁定到任何控件,因此數據沒有存儲在模型中。每個模型的值應該綁定到一個控件,然後只保留其值。我檢查了很多互聯網上的帖子,將這個數據錶轉換爲一個類,但是所有的帖子都顯示了這種轉換,假設列的數量是已知的。但是,就我而言,數據表的列數是未知的。 如何在我的視圖中顯示此數據表以及如何將修改後的數據表返回給控制器?
是的我不認爲你將能夠將你的表單值綁定到數據表..你可能能夠找到一些代碼,可以將你的formvaluecollection轉換爲數據表,並使用.. ex'cls.dtTable = BuildTableFromFormCollection(Request.Form);' – JamieD77
是否有任何其他方式來顯示數據表?像webgrid或其他東西?在ASP.Net中顯示一個非常容易使用的數據表。 – Harry