2014-02-13 1 views
0

Я хочу загрузить или скрыть частичный вид, когда переключатель радиоуправляемых отмечен или снят. В настоящее время я не понимаю, что мне делать. я в настоящее время имеют это в видуНа радиокнопке проверьте/снимите флажок, загрузите/скройте частичный вид

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/bundles/bootstrap") 
@Scripts.Render("~/bundles/jqueryval") 
@using (Html.BeginForm("Index", "Response", FormMethod.Post)) 
{  
      <div class="form-group"> 
       <div class="input-group"> 
        @Html.EditorFor(m => m.Isattending, "RadioButtonQuestion") 
       </div> 

      </div> 

} 
<div id="provideDateTime"> 
    //load partial view here 
</div> 

<script> 
    $(document).ready(function() { 
     $('input:radio[name=Isattending_0]').change(function() { 

      if ($("#Isattending_0").is(':checked')) { 
       //show partial view. 
       //should call a method in controller that renders partial view 
       //don't know what to do 
      } 
      else { 
       //hide partial view 
      } 
     }) 

    }) 

    </script> 

Помощник editfor генерирует два радио-кнопки с идентификатором Isattending_0 и Isattending_1, когда Isattending_0 проверяется частичный вид должен быть показан и на Снимают частичный вид должен быть скрыт, и по умолчанию он проверяется.

Этот метод используется в контроллере, который должен вызываться из вышеприведенного сценария

[HttpGet] 
public ActionResult AttendeeAvailability(Guid appointmentId, Guid attendeeId) 
{ 
    var attendeeAvailability = new AttendeeAvailableDateTime 
    { 
     AppointmentId = appointmentId, 
     AttendeeId = attendeeAvailability 
    }; 
    return View(attendeeAvailability); 
} 

PS: Я пытался показать/скрыть текст (Привет, мир) внутри DIV provideDateTime для начала с следующим кодом яваскрипта, но он не работает, текст привет мир всегда появлялся, даже если радиокнопка проверяется или незарегистрированного

<script> 
    $(document).ready(function() { 
     $('input:radio[name=Isattending_0]').change(function() { 

      if ($("#Isattending_0").is(':checked')) { 
       $("#provideDateTime").show(); 
      } 
      else { 
       $("#provideDateTime").hide(); 
      } 
     }) 

    }) 

    </script> 

Вынесена Html в браузере для радиокнопок enter image description here

+0

Да, я даже проверил идентификатор в визуализированном html браузером, разместил изображение сгенерированного html в браузере, всего лишь мин. – Cybercop

+0

В соответствии с вашим снимком экрана, название кнопок «Isattending», но ваш код '$ ('input: radio [name = Isattending_0]')' ищет кнопки с именем Isattending_0 ... Попробуйте и измените его только «Isattanding» :) –

+0

, но могу ли я сделать это по id? потому что оба имеют одно и то же имя, но разные id, и я хочу загрузить частичный вид на основе, переключатель с id 'Isattending_0' – Cybercop

ответ

0
<script> 
    $(document).ready(function() { 
$.get('/Controller/Action',function(data){ 
        $('#provideDateTime').html(data); 
       }); 
     $('#Isattending_0').change(function() { 

      if ($("#Isattending_0").is(':checked')) { 
       $.get('/Controller/Action',function(data){ 
        $('#provideDateTime').html(data); 
       }); 
      } 

     }) 
    $('#Isattending_1').change(function() { 

      if ($("#Isattending_1").is(':checked')) { 

        $('#provideDateTime').html(''); 

      } 

     }) 
    }) 

    </script> 
+0

, основанный на комментарии к моему вопросу, я понял, что оба переключателя имеют одинаковое имя, но у них разные идентификаторы. Итак, 'Isattending_0' является id, а не именем, будет ли это работать? – Cybercop

+0

также я должен предоставить параметры для метода контроллеров – Cybercop

+0

на самом деле, почему вы не можете написать два события? –

0

Просто выполните jQuery Сообщение о вызове в вашем контроллере, обслуживающем частичный вид. Убедитесь, что тип возврата в Action Action - ActionResult - это вернет результат.

$.ajax(type: "POST", 
     url: "{route to your action}", 
     data: {data}, 
     success: function (response) // This response will actually be HTML of your partial View 
     { 
      $("whatever-div-you-want-your-partial-view-to-appear").html(response): 
     } 
+0

Я думаю, вы имели в виду ajax get звоните, но в любом случае, при изменении радиообмена вызовите метод контроллера через ajax get call? – Cybercop

+0

@Biplov - вызов ajax должен находиться внутри вашего оператора if, где он проверяет, включен ли переключатель или нет. – Gjohn

+0

и по умолчанию, когда страница загружается в первый раз, установлен переключатель, для чего я могу сделать частичное представление? прямо сейчас он работает только на событии изменения – Cybercop