Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 会话变量的MVC Razor单选按钮值_C#_Asp.net Mvc_Asp.net Mvc 4_Model_Radio Button - Fatal编程技术网

C# 会话变量的MVC Razor单选按钮值

C# 会话变量的MVC Razor单选按钮值,c#,asp.net-mvc,asp.net-mvc-4,model,radio-button,C#,Asp.net Mvc,Asp.net Mvc 4,Model,Radio Button,是否有人知道如何在MVC中将“是/否”单选按钮设置为会话变量,以便在以后的过程中检查会话变量。我不想将单选按钮的值存储在我的模型上,因为用户必须编辑和保存,因此将该用户默认为该复选框值 @Html.Label("New Report") @Html.RadioButton("requestNewReport", "1")Yes @Html.RadioButton("requestNewReport", "0", new { @checked = "checked" })No 感谢使用Jquer

是否有人知道如何在MVC中将“是/否”单选按钮设置为会话变量,以便在以后的过程中检查会话变量。我不想将单选按钮的值存储在我的模型上,因为用户必须编辑和保存,因此将该用户默认为该复选框值

@Html.Label("New Report")
@Html.RadioButton("requestNewReport", "1")Yes
@Html.RadioButton("requestNewReport", "0", new { @checked = "checked" })No

感谢

使用Jquery和标记有HttpPost属性的控制器方法,您可以非常轻松地完成这项工作,您的控制器方法如下所示:

[HttpPost]
public ActionResult GetSessionVariable()
{
    const string sessionVariableName = "MySessionVariable";

    var sessionVariable = Session[sessionVariableName] as string;

    if (sessionVariable == null)
    {
        Session[sessionVariableName] = "No";
        sessionVariable = "No";
    }

    return Content(sessionVariable);
}
显然,您的会话变量会在程序中的其他地方发生变化,这只是得到它现在的状态,如果尚未赋值,则将其设置为默认值

然后,在您的视图中,您可以有一个这样的表单,其中包含单选按钮和一个输入按钮,当单击该按钮时,会运行一个Javascript方法以从上述控制器方法获取值,而无需刷新页面:

<form id="MyForm">
<fieldset>
    <legend>My Form</legend>
    <p>
        <label>Radio buttons</label>

        <input type="radio" name="radioYesNo" id="radioNo" value="No" checked="checked" />
        <label for="radioNo">No</label>

        <input type="radio" name="radioYesNo" id="radioYes" value="Yes" />
        <label for="radioYes">Yes</label>

        <button type="submit" onclick="UpdateRadioBox();">Update Radio Button</button>
    </p>
</fieldset>
</form>
此更新的Javascript方法如下所示,它使用jquery提供的ajax功能来更新单选按钮:

<script>

    function UpdateRadioBox() {
        $("#MyForm").submit(
                function () {
                    var url = "Home/GetSessionVariable";

                    $.ajax
                    (
                        {
                            type: "POST",
                            url: url,
                            success: function (data) {
                                if (data == "Yes") {
                                    $("#radioYes").attr('checked', 'checked');
                                } else {
                                    $("#radioNo").attr('checked', 'checked');
                                }
                            }
                        }
                    );

                    return false;
                }
            );
        }

</script>
您不必在输入按钮下运行Javascript,例如,您可以在计时器上每x秒执行一次