Javascript 如何将复选框值发布到将值保存到会话的控制器?

Javascript 如何将复选框值发布到将值保存到会话的控制器?,javascript,asp.net,asp.net-mvc,asp.net-core,session,Javascript,Asp.net,Asp.net Mvc,Asp.net Core,Session,我在复选框上有以下代码单击以获取复选框的复选框值,并将true或false传递给控制器var rpInfo=wait rpService.GetRPByID(id,showdelected),我尝试了以下操作,但它没有保留选定的值或在复选框更改时不更新 如何使用会话应用相同的逻辑 @{ var showDeleted = true; if (Context.Request.HasFormContentType && Context.Request.Form.Tr

我在复选框上有以下代码单击以获取复选框的复选框值,并将true或false传递给控制器
var rpInfo=wait rpService.GetRPByID(id,showdelected),我尝试了以下操作,但它没有保留选定的值或在复选框更改时不更新

如何使用会话应用相同的逻辑

@{
    var showDeleted = true; 
    if (Context.Request.HasFormContentType && Context.Request.Form.TryGetValue("showHideDeletedRps", out var formValue)
        && bool.TryParse(formValue, out var parsedFormValue))
    {
        showDeleted = parsedFormValue;
    }
    else if (Context.Request.Query.TryGetValue("showHideDeletedRps", out var queryValue)
        && bool.TryParse(queryValue, out var parsedQueryValue))
    {
        showDeleted = parsedQueryValue;
    }
 var id = Model.ID;
 var rpInfo = await rpService.GetRPByID(id, showDeleted);// used dependency injection to populate fields in a View Component 
}
我使用这个javascript代码

<script type="text/javascript">
    $("select[autopostback=true],input[type=checkbox][autopostback=true],input[type=radio][autopostback=true]").on("change", function () {
        $(this).closest("form").submit();
    });
</script>

$(“选择[autopostback=true],输入[type=checkbox][autopostback=true],输入[type=radio][autopostback=true])。打开(“更改”,函数(){
$(this).最近的(“表单”).submit();
});
更改时复选框

<input autopostback="true" name="showHideDeletedRps" id="showHideDeletedRps" type="checkbox" value="true">

如果您只想在单击复选框时将复选框的值传递给控制器的某个操作,您可以通过表单直接完成:

@{
    ViewData["Title"] = "Test";
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<form asp-action="test" method="post">
    <input autopostback="true" name="showHideDeletedRps" id="showHideDeletedRps" type="checkbox" value="true">
</form>
@section Scripts{
    <script type="text/javascript">
        if ('@ViewData["isChecked"]' == "True") {
            $('#showHideDeletedRps').prop('checked', true);
        } else {
            $('#showHideDeletedRps').prop('checked', false);
        }
        $("select[autopostback=true],input[type=checkbox][autopostback=true],input[type=radio][autopostback=true]").on("change", function () {
            $(this).closest("form").submit();
        });
    </script>
}
以下是测试结果:


使用AJAX可以轻松实现这一点。你介意一个片段吗?@Borntocode谢谢你我怎么做,我使用了依赖注入我可以直接调用api控制器吗?是的,你可以。对不起,我来晚了。查看@Yongqing Yu答案。我想它解决了你的问题
    [HttpPost]
    public IActionResult Test(bool showHideDeletedRps)
    {
        ViewData["isChecked"] = showHideDeletedRps;
        return View();
    }