gpt4 book ai didi

c# - 将复选框字段添加到基于数据表的表 MVC 4 Razor

转载 作者:太空宇宙 更新时间:2023-11-03 20:04:29 25 4
gpt4 key购买 nike

我正在使用带 Razor 的 MVC 4 Visual Studio 2012。

我正在根据从远程调用 SQL 服务器拉入数据集的多个表生成一个表。

我希望能够将这些表格输出到网页上,然后在它们旁边创建两列复选框,以便将它们分配到一个区域或另一个区域(它基本上将数据分类为已接受和未接受,同时允许一些继续如果尚未做出决定,则待定)。

我目前将数据集中的所有表分配给 Controller 中的数据表,然后导出到 Razor 页面。到目前为止,我还没有为此设置模型,我不确定如果我这样做的话我会需要什么。

这是我当前的 View :

@{
ViewBag.Title = "Requisitions";
}

<table class="table">
<thead>
<tr>
@foreach (System.Data.DataColumn col in Model.Columns)
{
<th class ="td">@col.Caption</th>
}
</tr>
</thead>
<tbody>
@foreach(System.Data.DataRow row in Model.Rows)
{
<tr>
@foreach (var cell in row.ItemArray)
{
<td class="td">@cell.ToString()</td>
}
</tr>
}
</tbody>
</table>

这是我当前的 Controller :

    DataTable R = new DataTable();

public void GetData()
{
string connString = "Data Source=.;database=dataBase;Integrated Security=SSPI";
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter("dbo.procApprovalSelectPending", connString);
using (adapter)
{
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.Fill(dataset);
}
int count = dataset.Tables.Count;
for (int i = 0; i < dataset.Tables.Count; i++)
{
// Do something for each recordset (11 recordsets)

if (i == 0)
{

R = dataset.Tables[i];

}
}
dataset.Dispose();
adapter.Dispose();
}

public ActionResult Rs()
{
GetData();
return View(R);
}

我的数据表比显示的多,但为了节省空间,它们被删除了。

总而言之,我想要两个复选框列,它们与从数据表创建的每一行对齐,允许我选择那部分数据发送回服务器,并创建每行的动态复选框给我一个错误:

@foreach(System.Data.DataRow row in Model.Rows)
{

<tr>
@foreach (var cell in row.ItemArray)
{
<td class="td">@cell.ToString()</td>
}
<td class="td">@Html.CheckBoxFor(m => m.Checkbox)</td>
</tr>
}

“表达式树不能包含动态操作”

提前致谢!

最佳答案

您应该创建一个 View 模型来表示您要显示的属性,包括“已接受”和“未接受”的 2 个附加 bool 属性。假设您的列是 ID 和 Name

public class MyModel
{
public int ID { get; set; }
public string Name { get; set; }
public bool Accepted { get; set; }
public bool NotAccepted { get; set; }
}

并根据表格中要显示的每一行创建一个集合

public ActionResult Rs()
{
List<MyModel> items = new List<MyModel>();
// Populate items from your datatable
return View(items);
}

那么在你看来

@model List<MyModel>
@using (Html.BeginForm()
{
<table>
@for (int i = 0; i < Model.Count; i++)
{
<tr>
<td>@Html.TextBoxFor(m => m[i].ID)</tr>
<td>@Html.TextBoxFor(m => m[i].Name)</tr>
<td>@Html.CheckBoxFor(m => m[i].Accepted)</tr>
<td>@Html.CheckBoxFor(m => m[i].NotAccepted)</tr>
</tr>
}
</table>
<input type="submit" value="Save" />
}

然后在你的post方法中

[HttpPost]
public ActionResult Rs(List<MyModel> model)
{
foreach(MyModel item in model)
{
if(item.Accepted) {.. // do something
else if (item.NotAccepted) { .. // do something else
else {.. // do another thing
}
}

关于c# - 将复选框字段添加到基于数据表的表 MVC 4 Razor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24704648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com