有没有人知道如何在MVC中将是/否单选按钮设置为会话变量,以便在稍后的过程中检查会话变量。我不希望在我的模型上存储单选按钮的值,因为用户必须编辑和保存,从而将此用户默认为此复选框值。
@Html.Label("New Report")
@Html.RadioButton("requestNewReport", "1")Yes
@Html.RadioButton("requestNewReport", "0", new { @checked = "checked" })No
由于
答案 0 :(得分:0)
你可以使用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秒在一个计时器上)。