2010-10-18 1 views
0

Как использовать Html.RadioButtonFor для создания переключателя, который при нажатии запускает код на сервере и контролирует видимость определенного текстового поля. ранее я использовал для создания <asp:control с autopostback="true" СпасибоКнопка радио с использованием Html.RadioButtonFor запускает код сервера при нажатии

ответ

1

Я не совсем уверен, что вы имеете в виду, но чтобы сделать обычную радиокнопку, сделайте обратную передачу, вам нужно использовать javascript (jquery - это то, что я бы использовал), который выполняет обратная передача для вас (не забудьте убедиться, что вы говорите ему, чтобы сделать реальную обратную передачу, а не async postback).

Убедитесь, что вы указываете обратную ссылку на actionresult, который делает то, что вы хотите, с помощью viewmodel, чтобы отразить выбранный параметр и отправить его в представление снова, тогда представление будет содержать более легкий код, например, если, иначе или что вам нужно, отражают выбор, сделанный пользователем.

Edit:

$(".rbClass").Click(function(){ 
    $("formToSubmit").submit(); 
}); 

это должно работать для обычного постбэка, вы должны смотреть на AJAX, есть даже возможность установить свойство «асинхр ложь» при использовании $ .ajax() проверки JQuery или поиск здесь, и вы получите отличные примеры.

+0

Спасибо Иоаким! У вас есть образец кода 1 или строки jquery, который может быть привязан к переключателю, который выполняет обратную передачу? – ninja

+0

обновил мой пост – Joakim

+0

Не могу поверить, что кто-то попросил образец кода jQuery. У них есть некоторые из лучших учебников и документации, которые я встречал как разработчик. Это заняло бы у вас меньше времени на «jquery radiobutton» и «jquery submit form», чем на ваш комментарий. – jfar

1

Как всегда вы могли бы начать с создания модели вида:

public class MyViewModel 
{ 
    public int RadioValue { get; set; } 
} 

затем контроллер:

[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new MyViewModel 
     { 
      // Set to some initial value 
      RadioValue = 1 
     }); 
    } 

    public ActionResult CheckVisibility(int radioValue) 
    { 
     return Json(new 
     { 
      // based on the value of the radio decide whether 
      // the textbox should be shown 
      visible = radioValue == 1 
     }, JsonRequestBehavior.AllowGet); 
    } 
} 

и, наконец, сильно типизированной:

<script type="text/javascript"> 
    $(function() { 
     // when one of the two radio buttons is clicked 
     $('.myradio').click(function() { 
      // prepare the request 
      var data = { radioValue: $(this).val() }; 

      // url to send the AJAX request to 
      var url = '<%= Url.Action("checkvisibility") %>'; 

      // send an AJAX request 
      $.getJSON(url, data, function (json) { 
       // when the request succeeds toggle the visibility of the textbox 
       // based on the JSON response returned by the server 
       $('#foo').toggle(json.visible); 
      }); 
     }); 
    }); 
</script> 

Value 1: <%: Html.RadioButtonFor(x => x.RadioValue, "1", new { @class ="myradio" })%> 
Value 2: <%: Html.RadioButtonFor(x => x.RadioValue, "2", new { @class = "myradio" })%> 
<br/> 
<input type="text" id="foo" name="foo" value="bar" /> 
+0

Слишком поздно, но нашел это полезным и объяснение хорошее .. –

Смежные вопросы