MVC和JQuery Mobile:单选按钮在发布时释放状态

MVC and JQuery Mobile : Radiobutton looses state on post

本文关键字:布时 释放 状态 单选按钮 JQuery Mobile MVC      更新时间:2023-09-26

我在一个页面上使用Jquery Mobile,该页面设置为data-ajax="false",以便在加载时始终刷新内容。

javascript在document.ready()上设置了单选按钮状态(已检查/未检查),但它仅在GET请求中成功。

当我点击保存按钮,页面在POST后再次加载时,选择就消失了。

    @using (Html.BeginForm())
{
  @Html.HiddenFor(x => x.CurrentCulture);
    <input type="radio" name="radio-language" id="radio-language-eng" value="en-US" />
    <label for="radio-language-eng">English</label>
    <input type="radio" name="radio-language" id="radio-language-esp" value="es-MX" />
    <label for="radio-language-esp">Spanish</label>
    <input type="submit" value="Save Changes" />
}
<script type="text/javascript">
  $(document).ready(function () {
    var currentCulture = $("#CurrentCulture").val();
    $('input[type=radio][name=radio-language]').checkboxradio();
    $("#radio-language-eng").prop("checked", currentCulture == "en-US");
    $("#radio-language-esp").prop("checked", currentCulture == "es-MX");
    $('input[type=radio][name=radio-language]').checkboxradio("refresh");
    $('input[type=radio][name=radio-language]').change(function () {
      $("#radio-language-eng").prop("checked", this.value == "en-US");
      $("#radio-language-esp").prop("checked", this.value == "es-MX");
      $("#CurrentCulture").val(this.value);
    });
  });
</script>

检查隐藏字段的值,它包含正确的区域性,那么为什么单选按钮会丢失它的状态呢?

您可以用RadioButtonFor()替换包含脚本的代码,并强绑定到您的模型。请注意,您需要为按钮提供一个id属性,以使用关联的标签并防止无效的html。

@Hml.RadioButtonFor(m => m.CurrentCulture, "en-US", new { id = "eng" })
@Html.Label("eng", "English")
@Hml.RadioButtonFor(m => m.CurrentCulture, "es-MX", new { id = "esp" })
@Html.Label("esp", "Spanish")