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