0

ASP.Net MVC3 (C#) アプリケーションから次の HTML を取得しました。

<div class="row-fluid">
   <div class="span4">
      <label for="MailPrefBusi">Business Street</label>
      <input type="radio" checked="checked" class="validate[groupRequired[MailingPreference]] MailingPreference" 
             parent_tab="tab4" id="MailPrefBusi" name="MailingPreference" value="1">
   </div>
   <div class="span4">
      <label for="MailPrefBusiPO">Business PO</label>
      <input type="radio" class="validate[groupRequired[MailingPreference]] MailingPreference" 
             parent_tab="tab4" id="MailPrefBusiPO" name="MailingPreference" value="0" disabled="disabled">
   </div>
   <div class="span4">
      <label for="MailPrefHome">Home</label>
      <input type="radio" class="validate[groupRequired[MailingPreference]] MailingPreference" 
             parent_tab="tab4" id="MailPrefHome" name="MailingPreference" value="2">
   </div>
</div>

ただし、ブラウザー、FF、IE9、IE8、および Chrome で表示する場合、MailPrefBusi ラジオはチェックされていません。

HTML を生成するコードは次のとおりです。

<div class="row-fluid">
    @{
        String busipref = "";
        String popref = "";
        String homepref = "";
        switch (ViewBag.part.MailingPreference)
        {
            case 1:
                busipref = "checked=\"checked\"";
                break;
            case 0:
                popref = "checked=\"checked\"";
                break;
            case 2:
                homepref = "checked=\"checked\"";
                break;
        }
     }
     <div class="span4">
        <label for="MailPrefBusi">Business Street</label>
        <input type="radio" value="1" name="MailingPreference" id="MailPrefBusi" 
               parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(busipref) />
     </div>
     <div class="span4">
        <label for="MailPrefBusiPO">Business PO</label>
        <input type="radio" value="0" name="MailingPreference" id="MailPrefBusiPO" 
               parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(popref) />
     </div>
     <div class="span4">
        <label for="MailPrefHome">Home</label>
        <input type="radio" value="2" name="MailingPreference" id="MailPrefHome" 
               parent_tab="tab4" class="validate[groupRequired[MailingPreference]] MailingPreference" @Html.Raw(homepref) />
     </div>
 </div>

このjQueryコードもあります:

if ($("#BusinessAddress1").val() == "") {
    $("#MailPrefBusi").attr('checked', false);
    $("#MailPrefBusi").attr('disabled', true);
} else {
    $("#MailPrefBusi").attr('disabled', false);
    if ($("#MailPrefBusi").attr('checked')) {
        $("#MailPrefBusi").attr('checked', 'checked');
    }
}
if ($("#HomeAddress1").val() == "") {
    $("#MailPrefHome").attr('checked', false);
    $("#MailPrefHome").attr('disabled', true);
} else {
    $("#MailPrefHome").attr('disabled', false);
    if ($("#MailPrefHome").attr('checked')) {
        $("#MailPrefHome").attr('checked', 'checked');
    }
}
if ($("#POAddress1").val() == "") {
    $("#MailPrefBusiPO").attr('checked', false);
    $("#MailPrefBusiPO").attr('disabled', true);
} else {
    $("#MailPrefBusiPO").attr('disabled', false);
    if ($("#MailPrefBusiPO").attr('checked')) {
        $("#MailPrefBusiPO").attr('checked', 'checked');
    }
}

しかし、それでもチェックが表示されません。これはこのフォームの非常に重要な部分であり、このラジオ グループでは少なくとも 1 つの項目をチェックする必要があります。ユーザーがチェックされていない場合、ユーザーの MailingPreference が空のアドレスを持つ値に変更されたインスタンスがあったため、値が正しく送信されるかどうかわかりません。

検証は jQuery ValidationEngine を使用して行われています。

ここで何が起こっているのか正確にはわかりません。答えを見つけるために高低を検索しましたが、空になり、試したすべての結果が同じです。

4

1 に答える 1

1

少し前に同様の問題がありました。基本的に、ラジオボタンリストの初期化をクライアント側に配置することで、次のようになりました。

$(function() {
    $('input[name=MailingPreference]:eq('+@(ViewBag.part.MailingPreference)+')').attr('checked', 'checked');
});
于 2013-02-19T23:44:18.447 に答える