2014-07-16 4 views
1

Я хотел бы добавить флажок в регистрационную форму boostrap identity 2.0, чтобы пользователь согласился с условиями сайта. По какой-то причине я получаю ошибку Cannot implicitly convert type 'bool?' to 'bool', и я не уверен, почему.Невозможно неявно преобразовать тип 'bool?' to 'bool'

AccountViewModel.cs

[Required] 
[Display(Name = "Agree Terms and Conditions")] 
public Nullable<bool> Agree { get; set; } 

Register.cshtml

@using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @id = "contact-form", role = "form" })) 
{ 
<div class="form-div-5"> 
    <label> 
     @Html.CheckBoxFor(m => m.Agree, new { @checked = "checked" }); 
    </label> 
</div> 
} 

site.css

#contact-form { 
    position: relative; 
    z-index: 1; 
    margin: 0 0 20px; 
    padding: 6px 0 0 0; 
    vertical-align: top; 
    font-family: Arial, Helvetica, sans-serif; 
} 
#contact-form .error { 
    display: block; 
    overflow: hidden; 
    position: absolute; 
    height: 0px; 
    font-size: 10px; 
    color: #F00; 
    -webkit-transition: all 0.3s ease-out; 
    -moz-transition: all 0.3s ease-out; 
    -o-transition: all 0.3s ease-out; 
    transition: all 0.3s ease-out; 
} 
.txt-form { 
    display: block; 
    padding-bottom: 6px; 
    color: #ffffff; 
} 
.txt-form span { 
    color: #ffffff; 
} 
.form-div-1, 
.form-div-2, 
.form-div-3 { 
    float: left; 
    width: 183px; 
} 
.form-div-1 { 
    margin-right: 21px; 
} 
.form-div-2 { 
    margin-right: 21px; 
} 
#contact-form div { 
    overflow: hidden; 
} 
#contact-form fieldset { 
    position: relative; 
    z-index: 10; 
    overflow: hidden; 
    padding: 0; 
    width: 100%; 
    border: none; 
} 

#contact-form label .checkbox { 
color:#15221E; 
height:40px; 
text-align:left; 
width:324px 
} 

#contact-form select { 
    display: block !important; 
    margin-bottom: 2px; 
    width: 100%; 
    border: 1px solid #000; 
    background: #e1e3e2; 
    color: #acacac; 
    font-size: 13px; 
    line-height: 20px !important; 
    font-family: Arial, Helvetica, sans-serif; 
    cursor: pointer; 
} 

#contact-form select option { 
    padding-bottom: 3px; 
} 

#contact-form label { 
    position: relative; 
    display: block; 
    float: left; 
    margin: 0; 
    padding: 0; 
    min-height: 60px; 
    width: 100%; 
} 
#contact-form .message { 
    display: block !important; 
    min-height: 251px; 
    width: 100%; 
} 
#contact-form input, 
#contact-form textarea { 
    -webkit-box-shadow: inset 1px 0 3px rgba(0, 0, 0, 0.32); 
    -moz-box-shadow: inset 1px 0 3px rgba(0, 0, 0, 0.32); 
    box-shadow: inset 1px 0 3px rgba(0, 0, 0, 0.32); 
    -webkit-border-radius: 5px; 
    -moz-border-radius: 5px; 
    border-radius: 5px; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
    float: left; 
    margin: 0; 
    padding: 10px 10px 7px; 
    width: 100%; 
    outline: none; 
    border: none; 
    background: #e1e3e2; 
    color: #acacac; 
    font-size: 13px; 
    line-height: 20px !important; 
    font-family: Arial, Helvetica, sans-serif; 
} 
#contact-form input { 
    height: 37px; 
} 
#contact-form input:focus, 
#contact-form textarea:focus { 
    -webkit-box-shadow: none; 
    -moz-box-shadow: none; 
    box-shadow: none; 
} 
#contact-form .area .error { 
    float: none; 
} 
#contact-form textarea { 
    overflow: auto; 
    width: 100%; 
    height: 287px; 
    resize: none; 
} 
#contact-form .success { 
    position: absolute; 
    top: 4px; 
    left: 0; 
    z-index: 20; 
    -webkit-border-radius: 5px; 
    -moz-border-radius: 5px; 
    border-radius: 5px; 
    display: none; 
    -webkit-box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    box-sizing: border-box; 
    padding: 14px 10px; 
    width: 100%; 
    border: 1px solid #000; 
    background: #e5412a; 
    color: #ffffff; 
    text-align: center; 
    text-transform: none; 
    font-size: 18px; 
    font-family: Arial, Helvetica, sans-serif; 
    line-height: 22px; 
} 
#contact-form .error, 
#contact-form .empty { 
    position: absolute; 
    bottom: 1px; 
    left: 2px; 
    display: none; 
    overflow: hidden; 
    padding: 5px 4px 0px 0; 
    width: 100%; 
    color: #f00; 
    text-transform: none; 
    font-size: 11px; 
    line-height: 1.27em; 
    font-family: Arial, Helvetica, sans-serif; 
} 
#contact-form .message .error, 
#contact-form .message .empty { 
    bottom: 5px; 
} 

.checkbox { 
    display: inline-block; 
    cursor: pointer; 
    font-size: 13px; 
    margin-right:40px; line-height:37px; 
} 
input[type=checkbox] { 
    display:none; 
} 
.checkbox:before { 
    content: ""; 
    display: inline-block; 
    width: 37px; 
    height: 37px; 
    vertical-align:middle; 
    background: #e1e3e2; 
    color: #acacac; 
    text-align: center; 
    box-shadow: inset 0px 2px 3px 0px rgba(0, 0, 0, .3), 0px 1px 0px 0px rgba(255, 255, 255, .8); 
    border-radius: 3px; 
} 
input[type=checkbox]:checked + .checkbox:before { 
    content: "\2713"; 
    text-shadow: 1px 1px 1px rgba(0, 0, 0, .2); 
    font-size: 15px; 
} 

Я думал checkb ox был истинным или ложным, а также является булевым значением.

ответ

0

Правильно или неверно. для этого нет нулевого состояния, поэтому просто измените его на прямой bool.

public bool Agree { get; set; } 
1

Это определение CheckBoxFor:

public static MvcHtmlString CheckBoxFor<TModel>(
    this HtmlHelper<TModel> htmlHelper, 
    Expression<Func<TModel, bool>> expression, 
    IDictionary<string, Object> htmlAttributes 
) 

Первый параметр, как ожидается, вернуть bool не bool?. Нет неявный конверсия от bool до bool? вам нужно использовать тип.

1

Ваша проблема в том, что вы определяете Agree как это:

public Nullable<bool> Agree { get; set; } 

Другой способ определения Nullable<bool> является bool?, и компилятор правильно говорит вам, что не существует неявное преобразование возможно между bool? и bool, потому что переменная типа bool? может иметь нулевое значение и как это можно сопоставить с этим флажком?

Переключить его к этому:

public bool Agree { get; set; } 

И ошибка компилятора будет исправлена.

EDIT

После внесения этого изменения, вы заявили, что ваш флажок не отображались до сих пор. Затем я попросил вас опубликовать свой CSS, который вы сделали. Вот оскорбительный стиль:

input[type=checkbox] { 
    display:none; 
} 

Удалите это, и появится ваш флажок. Флажок появился, как только я прокомментировал этот стиль, когда я поставил ваш код в скрипку.

+0

Ошибка исчезла, но я не вижу флажок, но если я рассматриваю источник, я получаю '

' любые мысли? – iggyweb

+0

Почему вы помещаете флажок внутри ярлыка?Удалите ярлык и посмотрите, что происходит. –

+0

Пробовал это тоже, просто область белого пространства, просмотр источника показывает '

' – iggyweb

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