【问题标题】:MVC Razor Radio Button Value to Session VariableMVC Razor 单选按钮值到会话变量
【发布时间】:2014-02-04 06:09:42
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: c# asp.net-mvc asp.net-mvc-4 model radio-button


【解决方案1】:

您可以使用 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 秒的计时器上)。

【讨论】:

    猜你喜欢
    • 2012-05-01
    • 2017-09-20
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 2022-01-10
    • 2017-03-02
    • 2014-04-06
    相关资源
    最近更新 更多