我有一个复选框:
<form action="" method="POST">
<label>
Archived
@Html.CheckBox("checkedArchive")
</label>
</form>
当它被选中时,我希望它调用ContentResult,它有许多方法,并附加一个新值来检查它是否被选中/取消选中:
public ContentResult Data(int? id)
到目前为止,我有:
[HttpPost]
public ActionResult Index(FormCollection formData)
{
bool checked;
//Check if value is selected and set bool to true or false
return RedirectToAction("Data", new {checked});
}
但我无法做任何检查和通过。必须有一个更简单的方法。
答案 0 :(得分:1)
bool checked = Request.Form.AllKeys.Where(c =&gt; c.Contains(“checkedArchive”))。FirstOrDefault()!= null;
由于只会检出已检查的值,因此您无需验证是否已对其进行检查。
答案 1 :(得分:0)
我通过以下方式检查通用复选框:
bool checked = Request.Form["checkedArchive"] != "false";
答案 2 :(得分:0)
如果可以像这样更改索引的签名:
[HttpPost]
public ActionResult Index(FormCollection formData, bool? checkedArchive)
{
bool checked;
if(!checkedArchive.HasValue)
checked = false;
else
checked = checkedArchive.Value;
//Check if value is selected and set bool to true or false
return RedirectToAction("Data", new {checked});
}
我希望它会有所帮助。请注意,如果您有submit button
,此解决方案将起作用。您想要实现的目标我认为您需要使用Jquery Ajax function attached to the event change of your
复选框并在控制器中调用相应的操作。
首先,您需要在视图中引用JQuery lib,然后将此脚本放在头部中
$(document).ready(function() {
$("#HcheckedArchiven").click(function(){
$.ajax({
url: '@Url.Action("actionmethod", "controllername")',
type: "POST",
data: //data,
dataType: //type of response,
success: function (data) {
//your code here
}
error: function(data){
}
});});
})
另外,如果你想在不点击的情况下调用ajax,但只有在检查了值的情况下,你必须在click事件中使用if条件来检查相同的使用$(this).is(:checked)
答案 3 :(得分:0)
如果不提交表单,您可以发出ajax请求并将复选框的值作为参数发送。
将此值发送到控制器后,您可以确定参数中的值,并根据值调用所需的方法。