MVC Javascript и AJAX, checbox onchange () - PullRequest
0 голосов
/ 22 января 2019

Я строю простой проект 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);
        }
    }

и его вид

@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>

Основной вид называется Тестовый вид

 @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>

Какполучить значение bool флажка и передать его методу?Заранее спасибо

1 Ответ

0 голосов
/ 22 января 2019

Вы отправляете свою форму, и переменная 'Флажок' не будет содержать значения, установлен ли флажок или нет.Только AutoCalculateMandate будет содержать значение действия проверки.Измените свой метод на

  
[HttpPost]
        public ActionResult GetValidUser(bool AutoCalculateMandate)
{
    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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...