我有一些图片,每张图片旁边都有一个复选框,如下所示:
<input type="checkbox" name="select" value="<%=item.Id%>" />
现在,我想通过单击超链接将所选复选框发送到控制器。我有:
<a href='<%: Url.Action("DeleteSelected", "Product", new { @ShopID = ViewBag.shopIDempty } ) %>'>Delete</a>
并在控制器中:
public ActionResult DeleteSelected(int[] select, int ShopID)
{
foreach (int checkBoxSelected in select)
{
//Do something...
}
return RedirectToAction("Index");
}
但是没有任何内容传递给int [] select,它总是为null。有什么问题?
答案 0 :(得分:0)
这些==&gt; 1)创建一个包含所选复选框值的数组
var delete= new Array();
$('.checkboxed').live('click', function () {
if ($(this)[0].checked == true) {
var itemdel= $(this).val();
delete.push(itemdel);
} else {
var remve = $(this).val();
for (var i = 0; i < delete.length; i++) {
if (delete[i] == remve) {
delete.splice(i, 1);
break;
}
}
}
});
2)点击超链接
进行ajax调用$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: '/Product/DeleteSelected'
+ '?ShopID =' + ShopIdValue,
dataType: 'json',
data: $.toJSON(delete),
success: function (result) {
window.location.href=result;
},
async: false,
cache: false
});
3)让你的行动像这样
public ActionResult DeleteSelected(int[] select)
{
var shopid= Request["ShopID "];
}
答案 1 :(得分:0)
试试这个:
[HttpPost]
public ActionResult DeleteSelected(FormCollection collection)
{
try
{
string[] test = collection.GetValues("select");
}
catch (Exception ex)
{
return null;
}
}
我确实想要注意,您正在采用的方法需要一个表单来包装所有复选框,或者您需要专门构建一个对象以发送到控制器,如Syed所示。如果您使用表单方法,则需要使用a链接触发表单提交或将链接转换为提交按钮并为ShopID设置隐藏字段。