Переключатель с помощью Html.RadioButton для запуска кода сервера при нажатии - PullRequest
0 голосов
/ 18 октября 2010

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

Ответы [ 2 ]

1 голос
/ 18 октября 2010

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

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" />
1 голос
/ 18 октября 2010

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

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

Редактировать:

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

это должно работать для обычной обратной передачи, вы должны взглянуть на ajax, есть даже опция для установки свойства "async: false "при использовании $ .ajax () проверьте jquery или выполните поиск здесь, и вы получите отличные примеры.

...