MVC Javascript和AJAX,checbox onchange()

MVC Javascript和AJAX,checbox onchange(),javascript,ajax,asp.net-mvc,visual-studio,Javascript,Ajax,Asp.net Mvc,Visual Studio,我正在构建一个简单的MVC项目,我需要在更改时使用checkbox方法,并获取bool值,以便在我的控制器的方法中使用 控制器中的方法: [HttpGet] public ActionResult GetValidUser(bool Checkbox) { List<Users> userData = new List<Users>(); connection(); con.Open();

我正在构建一个简单的MVC项目,我需要在更改时使用checkbox方法,并获取bool值,以便在我的控制器的方法中使用

控制器中的方法:

 [HttpGet]
    public ActionResult GetValidUser(bool Checkbox)
    {
        List<Users> userData = new List<Users>();
        connection();
        con.Open();
        var d = new DataTable();
        //bool valid = bool.Parse(Request.Form.GetValues("Category").ToString());
        try
        {
            if (ModelState.IsValid)
            {
                if (Checkbox)
                    is_active = true;
                else if (!Checkbox)
                    is_active = false;
                userData = Getdatatabletolist("GetActiveUsers");
                return View(userData);
            }
            ViewBag.Message = "Users are here";
            return View(userData);
        }
        catch (Exception ex)
        {
            ViewBag.Message = "Can't get users";
            return View(userData);
        }
    }
[HttpGet]
公共行动结果GetValidUser(布尔复选框)
{
List userData=new List();
连接();
con.Open();
var d=新数据表();
//bool valid=bool.Parse(Request.Form.GetValues(“Category”).ToString());
尝试
{
if(ModelState.IsValid)
{
如果(复选框)
is_active=true;
else如果(!复选框)
is_active=false;
userData=Getdatatabletolist(“GetActiveUsers”);
返回视图(userData);
}
ViewBag.Message=“用户在这里”;
返回视图(userData);
}
捕获(例外情况除外)
{
ViewBag.Message=“无法获取用户”;
返回视图(userData);
}
}
及其观点

@model IEnumerable<WebApplicationIntro.Models.Users>
@{
    ViewBag.Title = "GetValidUser";
}
<h2>GetValidUser</h2>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Username)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Password)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.is_active)
        </th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Username)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Password)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.is_active)
            </td>
        </tr>
    }
</table>
@model IEnumerable
@{
ViewBag.Title=“GetValidUser”;
}
格瓦利杜瑟
@DisplayNameFor(model=>model.Name)
@DisplayNameFor(model=>model.Username)
@DisplayNameFor(model=>model.Password)
@DisplayNameFor(model=>model.is\u处于活动状态)
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.Name)
@DisplayFor(modelItem=>item.Username)
@DisplayFor(modelItem=>item.Password)
@DisplayFor(modelItem=>item.is\u处于活动状态)
}
主视图称为测试视图

 @using WebApplicationIntro.Models

@{
    ViewBag.Title = "Test";
    AjaxOptions ajaxOpts = new AjaxOptions
    {
        UpdateTargetId = "tableBody"
    };
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script src="~/Scripts/jquery-3.3.1.min.js"></script>
</head>
<body>
    <table>
        <tbody id="tableBody">
            @Html.Action("GetValidUser", new { Checkbox = false })
        </tbody>
    </table>
    <script>
        $(document).ready(alert("jquery is working"));
    </script>
    @using (Ajax.BeginForm("GetValidUser", ajaxOpts))
    {
        <div class="col-md-10">
            @Html.CheckBox("AutoCalculateMandate", false, new { onchange = "javascript:$(this.form).submit();" })
        </div>
    }
</body>
</html>
@使用WebApplicationIntro.Models
@{
ViewBag.Title=“测试”;
AjaxOptions ajaxOpts=新的AjaxOptions
{
UpdateTargetId=“tableBody”
};
}
指数
@Action(“GetValidUser”,new{Checkbox=false})
$(文档).ready(警报(“jquery正在工作”);
@使用(Ajax.BeginForm(“GetValidUser”,ajaxOpts))
{
@CheckBox(“AutoCalculateMandate”,false,new{onchange=“javascript:$(this.form).submit();”})
}
如何获取复选框的bool值并将其传递给方法?
提前感谢您

您正在提交表单,变量“Checkbox”将不包含复选框是否选中的值。只有AutoCalculateMandate将保存检查操作的值。 将您的方法更改为


[HttpPost]
公共行动结果GetValidUser(布尔自动计算标准)
{
List userData=new List();
连接();
con.Open();
var d=新数据表();
//bool valid=bool.Parse(Request.Form.GetValues(“Category”).ToString());
尝试
{
if(ModelState.IsValid)
{
如果(复选框)
is_active=true;
else如果(!复选框)
is_active=false;
userData=Getdatatabletolist(“GetActiveUsers”);
返回视图(userData);
}
ViewBag.Message=“用户在这里”;
返回视图(userData);
}
捕获(例外情况除外)
{
ViewBag.Message=“无法获取用户”;
返回视图(userData);
}

}
将方法签名更改为public ActionResult GetValidUser(bool AutoCalculateMandate)。我使用的这个方法是从数据库获取列表,用post替换get将导致httpException!您是否有与GetValidUser关联的视图?您能提供该httpexception的详细信息吗?在这一行:@Html.Action(“GetValidUser”,new{AutoCalculateMandate=false})内部异常1:httpexception:执行子请求失败。有关详细信息,请检查InnerException。内部异常2:HttpException:在控制器“WebApplicationIntro.Controllers.DBController”上找不到公共操作方法“GetValidUser”。你可以在我的问题中找到GetValidUser的视图,我不知道在这里使用相同方法名的Html.Action的逻辑是什么。最好将@Html.Action(“GetValidUser”,new{AutoCalculateMandate=false})与其他名称分开,并将submit和Html.Action的通用功能分别放在另一个要访问的方法中。我对MVC有点陌生,Html.Action是获取方法GetValidUser的视图并将其放在测试视图的表中,你能在问题中编辑我的代码,告诉我你把它们分开是什么意思吗