2013-02-19 3 views
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과 크롬 , MailPrefBusi 라디오가 표시되어 있지 않습니다.

<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'); 
    } 
} 

을하지만 여전히 체크 표시되지 않습니다

다음은 HTML을 생성하는 코드입니다. 이것은이 양식의 매우 중요한 부분이며이 라디오 그룹은 최소한 하나의 항목을 확인해야합니다. 사용자가 체크 표시되지 않으면, 사용자의 MailingPreference가 빈 주소가있는 값으로 수정 된 인스턴스를 가지고 있기 때문에 값이 올바르게 전송되는지 확신 할 수 없습니다.

유효성 검사는 jQuery ValidationEngine을 사용하여 수행됩니다.

정확히 무슨 일이 일어나고 있는지 잘 모르겠습니다. 나는 대답을 찾기 위해 높고 낮게 찾았지만 공백이 오지 만 내가 시도한 모든 것은 같은 결과를 낳는다.

+1

사용의 jQuery .prop() 함수를 : HTTP ://api.jquery.com/prop/ –

+0

여전히 차이가 있다고 생각하지 않습니다. – MB34

+1

@Hanlet Escañ0 - .prop()를 사용하기로 변경하고 작동했습니다. 감사합니다. – MB34

답변

1

나는 오래 전 비슷한 문제가 없었다. 기본적으로 내가 함께 결국 무엇을 클라이언트 측에 라디오 버튼 목록 초기화를 넣어이었고,이 같은 것을 보았다 : 대신 .attr()이 대한

$(function() { 
    $('input[name=MailingPreference]:eq('[email protected](ViewBag.part.MailingPreference)+')').attr('checked', 'checked'); 
}); 
+0

나는 이것을 받아 들였지만 VALUE = ViewBag.part.MailingPreference로 올바른 라디오를 선택하지 않았다; 그룹의 FIRST (색인) 만 선택합니다. – MB34

+0

이것은 실제로 효과가있었습니다 :'$ ('input [name = MailingPreference]') 필터 (function() {return $ (this)) .val() == @ (ViewBag.part.MailingPreference);})' – MB34

+0

이것을 추가했습니다. viewBag 값에 기반하여 Gender를 선택하는 코드 :'$ ('select [name = Gender] 옵션') filter (function() {return $ (this) .val() == @ (ViewBag.part.Gender) ;}). prop ('selected', true);'이 filter() 함수는 멋지다. – MB34

관련 문제