2013-07-17 3 views
0

Каждая запись в таблице «Поставщик» имеет столбец bool «SupplierEmailProvided». Для отображения значения на экране:взять значение bool и отобразить как checkbox

@Model.Suppliers.Where(s => s.Id == products.PreferredSupplierId).FirstOrDefault().SupplierEmailProvided 

Это прекрасно работает, однако ATM он отображает «истина» или «ложь» (на экране), в зависимости от его значения.

Я хочу, чтобы изменить это на флажок, который отключается, если значение FALSE

Пытались что-то вроде: @Html.CheckBoxFor(s => s.Suppliers.Where(x => x.SupplierEmailProvided)).FirstOrDefault().SupplierEmailProvided'

, но не хорошо. любые идеи ребята?

EDIT Так что я дал все предложения назад.

@if((s => s.Id == products.PreferredSupplierId).FirstOrDefault().SupplierEmailProvided) 
        { 
          @Html.CheckBoxFor(s => s.Suppliers 
                .Where(x => x.Id == products.PreferredSupplierId) 
                .FirstOrDefault() 
                .SupplierEmailProvided) 

          @Html.CheckBox("SupplierEmailProvided",true, 
          (Model.Suppliers.Where(x => x.SupplierEmailProvided)).FirstOrDefault().SupplierEmailProvided 
          ? (object) new { disabled = "false" } : (object) new {disabled = "true" }) 
        } 

начало, если статут говорит «оператор». не может применяться к opperad типа lamba?

любая помощь?

+0

Если supplierEmailProvided обнуляемым вы должны поставить SupplierEmailProvided.Value – Bearcat9425

ответ

1

Предполагая SupplierEmailProvided является boolean type, не проверены, хотя логика должна быть ясной

As y ou сказал, что флажок должен находиться в отключенном состоянии, когда значение false.

@if(Model.Suppliers.Where(x => x.SupplierEmailProvided)).FirstOrDefault().SupplierEmailProvided) 
{ 
    Html.CheckBox("SupplierEmailProvided",true) 
}else 
{ 
    Html.CheckBox("SupplierEmailProvided",false,new{ disabled ="true"}) 
} 
+0

спасибо за ответ ... проблема в том, когда я использовал ваш код .... все флажки, где возвращаются true, и все из них отключены.Я хочу, чтобы только «ложные» значения были отключены? и почему все верны? – John

+0

см. Редактирование оригинала msg – John

+0

Отметьте мое редактирование .. – ssilas777

0

Вы пробовали это?

@if(Model.Suppliers.FirstOrDefault(s => s.Id == products.PreferredSupplierId).SupplierEmailProvided) 
{ 
    html code 
} 
else 
{ 
    ... 
} 
+0

это говорит оператор «» не может быть применен к операнду типа «выражение lamba» – John

+0

Вы не можете взять этот поставщикEmailProvided в модели и вернуть его при возврате вида, а затем вы можете прямо проверить, является ли (Model.SupplierEmailProvided). –

+0

см. Оригинал msg для редактирования – John

0

CheckBoxFor должен работать, проверить скобки, возможно разделить задание пополам:

@{ 
    var supplier = Model.Suppliers.Where(s => s.Id == products.PreferredSupplierId).FirstOrDefault(); 
} 
@Html.CheckBoxFor(model => supplier.SupplierEmailProvided) 

Или в одной строке, как вы делаете, где:

@Html.CheckBoxFor(model => model.Suppliers 
           .Where(s => s.Id == products.PreferredSupplierId) 
           .FirstOrDefault() 
           .SupplierEmailProvided) 
+0

ahh nice one. поэтому как отключить флажок, если значение ложно – John

+0

В этом случае вам понадобится 'if', аналогичный тому, который указан в ответе @ d.Siva. Случай использования кажется странным честно, поэтому вы хотите, чтобы он был отключен, если он неверен, но включен (так что пользователи могут его проверить), если он уже проверен? – Tallmaris

+0

Да, идея ... если ее ложь, письмо не существует. если его истина, электронная почта существует в записи поставщика ... Пользователь может затем отметить или не отметить тот же флажок, который будет отправлен обратно. Если установлено значение true для отправки и отправки по электронной почте поставщику, если false ... no email – John