如何从剃刀视图引擎中动态创建的复选框列表中查找复选框的值(即,是否选中)?代码运行如下......
@foreach (var item in Model))
{
<tr>
<td class="Viewtd">
@Html.ActionLink(item.Title, "Edit", new { id = item.id})
</td>
<td>
@Html.CheckBox("ChkBox"+item.ThresholdID , false, new { id = item.id})
</td>
</tr>
}
如何在控制器中获取这些复选框值?
答案 0 :(得分:1)
以正确的方式执行:使用视图模型和编辑器模板。
一如既往地定义视图模型:
public class MyViewModel
{
public string Title { get; set; }
public string Id { get; set; }
public bool IsThreshold { get; set; }
}
然后是一个控制器来填充这个视图模型:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new[]
{
new MyViewModel
{
Id = "1",
Title = "title 1",
IsThreshold = false,
},
new MyViewModel
{
Id = "2",
Title = "title 2",
IsThreshold = true,
},
new MyViewModel
{
Id = "3",
Title = "title 3",
IsThreshold = false,
},
};
return View(model);
}
[HttpPost]
public ActionResult Edit(MyViewModel model)
{
// This action will be responsible for editing a single row
// it will be passed the id of the model and the value of the checkbox
// So here you can process them and return some view
return Content("thanks for updating", "text/plain");
}
}
然后是索引视图(~/Views/Home/Index.cshtml
):
@model IEnumerable<MyViewModel>
<table>
<thead>
<tr>
<th></th>
<th>Threshold</th>
</tr>
</thead>
<tbody>
@Html.EditorForModel()
</tbody>
</table>
最后是编辑器模板(~/Views/Home/EditorTemplates/MyViewModel.cshtml
):
@model MyViewModel
@{
ViewData.TemplateInfo.HtmlFieldPrefix = "";
}
<tr>
@using (Html.BeginForm("Edit", "Home"))
{
@Html.HiddenFor(x => x.Id)
@Html.HiddenFor(x => x.Title)
<td><input type="submit" value="@Model.Title" /></td>
<td>@Html.CheckBoxFor(x => x.IsThreshold)</td>
}
</tr>