我正在尝试解决以下问题。
假设您在视图中有以下代码
@foreach (var x in Model)
{
<input type="checkbox" name="IDs" value="@x.ID" />
}
然后用户点击一些链接进行选择。如何将所选复选框的ID传递给控制器。
例如,您有以下链接
@Html.ActionLink("Do Something", "ActionName", new { selection = ???? // i dont know how i reference the checke boxes })
我知道我可以将循环放在Html开始表单中,并使链接成为提交按钮,但这是我试图解决的问题的摘要。在实际应用程序中,我无法将链接转换为按钮。
如果可能,我宁愿不使用JavaScript。
答案 0 :(得分:1)
我不知道有一种方法可以用典型的MVC助手来做到这一点。我在过去做的是创建链接,以便它被称为自定义jquery函数,它将选择所有选中类型复选框的输入,然后创建一个要发回的列表。
这样的事情:
$(
$('#anchorid').click(function()
{
SubmitCheckBoxes();
});
);
function SubmitCheckBoxes()
{
var list = {};
$(input[type="checkbox"]:checked).each(
function()
{
var identifier = $(this).attr('for');
if(identifier == undefined)
identifier = $(this).attr('name');
if(list[identifier])
list[identifier].push($(this).val());
else
list[identifier] = [$(this).val()];
});
//This must be here to make any json array not have brackets.
//MVC binding will not work otherwise
jQuery.ajaxSettings.traditional = true;
$.post("./ActionName", list, function(data){//do something on response});
}
答案 1 :(得分:0)
您可以轻松地将所选复选框的值存储在数组中,同时勾选/取消选中它们。 即。
$(function(){
$('#btnClick').click(function(){
var values = [];
$(':checkbox:checked').each(function(i){
values[i] = $(this).val();
});
});
});
并且在您准备就绪时,您可以挂钩链接并执行直接发布,并将“值”作为参数传递给jquery post方法。
答案 2 :(得分:0)
要在不使用JavaScript的情况下将数据提交给控制器,您需要使用HTML表单提交。有许多选项,例如按钮,提交类型的输入或表单中类型图像的输入。您可以使用图像来显示链接的外观,但这可能并不理想。
如果你不能使用提交/图像的按钮或输入,那么JavaScript可能是你的下一个最佳选择。
你有什么理由不能使用按钮或JavaScript吗?