MVC Razor Radio Button Value to Session Variable
是否有人知道如何将MVC中的"是/否"单选按钮设置为会话变量,以便稍后在该过程中检查会话变量。我不想在我的模型上存储单选按钮的值,因为用户必须编辑和保存,因此将此用户默认为该复选框值。
1 2 3 |
谢谢
使用jquery和用httppost属性标记的controller方法可以很容易地做到这一点,您的controller方法将如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [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方法来从上面的控制器方法中获取值,而不刷新页面:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <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功能更新单选按钮:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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; } ); } |
您不必在输入按钮下运行javascript,您可以随意这样做(例如,每隔x秒在计时器上)。