ASP.net MVC и флажки - PullRequest
       3

ASP.net MVC и флажки

2 голосов
/ 11 апреля 2011

Привет

Я знаю, что можно использовать Html.CheckBoxFor (c => c.MyBool), чтобы получить связыватель по умолчанию для привязки правильного значения к параметру объекта модели в действии элемента управления (строго типизированное представление).

Если мне, однако, необходимо добавить флажок "запомнить" в форму на главной странице, это будет означать, что строгий тип не используется.

Скажем, что действие Logon принимает объект следующего класса

public class LogOnModel
    {
        [Required]
        [DisplayName("User name")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [DisplayName("Password")]
        public string Password { get; set; }

        [DisplayName("Remember me?")]
        public Boolean RememberMe { get; set; }
    }

Чтобы привязка по умолчанию отображалась в UserName и Password, мы могли бы просто создать входные данные с правильными именами (UserName / Password). Однако это невозможно с помощью свойства RememberMe. Чтобы заставить это работать, я должен объявить скрытое поле с именем RmemberMe, а затем установить этот ввод с помощью JavaScript следующим образом:

$(document).ready(function () {

            $('input[id*=chkbRemember]').click(function () {
                if ($('input[id*=chkbRemember]').attr('checked')) {
                    $('input[id *= RememberMe]').val("True");
                }
                else {
                    $('input[id *= RememberMe]').val("False");
                }
            });
        });

Это будет работать, но действительно ли это правильный путь?

BestRegards

1 Ответ

2 голосов
/ 11 апреля 2011

Это хорошо известная проблема с формами HTML.

Если у вас есть поле ввода, и оно никогда не проверяется, значение не публикуется.

Html.CheckBox & Html.CheckBoxFor отображает дополнительный скрытый элемент с тем же именем, чтобы гарантировать, что некоторое значение всегда публикуется.Я полагаю, что Ruby on Rails использует ту же технику (и, возможно, другие).

На форуме Asp.Net есть краткое обсуждение этого , а также некоторые предыдущие вопросы StackOverflow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...