我正在构建一个MVC应用程序,现在我的视图会生成一包项目。如果用户想要发送数据,则需要选中复选框。
以下是我的观点及其构建方式:
<script type="text/javascript">
$(document).ready(function() {
//alert("The document is ready");
$("#selectAll").click(function() {
//alert("The case has been clicked");
var chkValue = $(this).is(":checked");
$(".divChckBox").prop("checked", chkValue);
});
});
</script>
<p>
@using (Html.BeginForm("SendObj", "Manager"))
{
<p>
Select / UnSelet All Items @Html.CheckBox("selectAll", true)
</p>
<table>
<tr>
<th>Card Name</th>
<th>Number In Stock</th>
(...)
</tr>
@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<td>@Html.DisplayFor(x => x[i].m_OthObj.m_ObjName)</td>
<td>@Html.DisplayFor(x => x[i].m_NbInStock)@Html.HiddenFor(x => x[i].m_NbInStock)</td>
(...)
<td>
<input type="checkbox" name="itdoesnotmatter" class="divChckBox" checked="true"/>
</td>
</tr>
}
</table>
<input type="submit" value="Send"/>
}
</p>
所以你明白为什么我不能使用“CheckboxFor”。现在我想要做的只是发送复选框状态为“已选中”的项目。我知道如何通过模型绑定(checkboxfor)来做到这一点,但我对如何构建它一无所知。 我需要返回一个项目列表。那怎么能这样呢?非常感谢你!
答案 0 :(得分:0)
尝试使用attr
方法更改属性checked
。
$(document).ready(function() {
$("#selectAll").click(function() {
var chkValue = $(this).is(":checked");
$(".divChckBox").attr("checked", chkValue);
});
});
答案 1 :(得分:0)
你的表格将根据名字返回值,所以拍摄谁告诉你这样一个愚蠢的名字:) 使用
<input type="checkbox" name="InStock" class="divChckBox" checked="true" value="@Model[i].ID" />
或更具代表性的东西。请注意,您提供唯一标识符作为复选框的值非常重要。值是你如何确定检查的内容!
在您的控制器中,有几种方法可以捕获它。我是这样做的:
public ActionResult Create(List<int> InStock)
{
foreach(var inStockItem in InStock)
{
//do what you need to do
}
}
重点:
List<int> InStock
这必须与复选框上的NAME属性匹配。实际值将是您的复选框的值。
这里我只是随机选择Create for your Action,但你需要让它匹配你所处的任何动作(编辑,索引等)。
祝你好运!
答案 2 :(得分:0)
查看代码:
<!-- note "x[i].m_id"; Use the entity's id property is here
...maybe this should be m_NbInStock? -->
<input type="checkbox" name="selectedItems" value="@x[i].m_id" class="divChckBox" checked="true"/>
控制器代码:
public class Manager : Controller
{
/* ... */
[HttpPost]
public ActionResult SendObj(IList<Int32> selectedItems)
{
// Grab those items by their IDs found within `selectedItems` and perform
// any processing necessary
// ...
//return View();
}
/* ... */
}