2013-07-17 41 views
0

'Supplier'表中的每個記錄都有一個bool'SupplierEmailProvided'列。要顯示在屏幕上的值:取值爲bool並顯示爲複選框

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

這工作正常,但ATM它根據其值顯示'真'或'虛假'(在屏幕上)。

我想改變這種狀況到複選框,這將被禁用如果值爲FALSE

想是這樣:@Html.CheckBoxFor(s => s.Suppliers.Where(x => x.SupplierEmailProvided)).FirstOrDefault().SupplierEmailProvided'

反而不好。任何想法傢伙?

編輯 所以我給出了所有建議前。

@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" }) 
        } 

如果語句中顯示'operator',則表示開始。不能應用於lamba類型的opperad?

有幫助嗎?

+0

如果supplierEmailProvided爲空,則必須將SupplierEmailProvided.Value – Bearcat9425

回答

1

假設SupplierEmailProvided是布爾類型,雖然沒有測試邏輯應該清除

由於y當值爲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

您不能將此SupplierEmail提供給Model並在返回視圖時返回它,然後在視圖中直接檢查是否(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不錯。那麼如果值爲假,我該如何禁用複選框 – John

+0

在這種情況下,您將需要一個'if'類似於@ d.Siva回答中的那個。這個用例看起來很奇怪,所以你希望它被禁用,如果它是錯誤的,但是被啓用(所以用戶可以取消選中它),如果它已經被檢查? – Tallmaris

+0

是的想法是...如果它的錯誤,電子郵件不存在。如果它的真實電子郵件確實存在於供應商記錄中,用戶可以勾選或取消選中將被回傳的同一複選框。如果設置爲true發送郵件併發送給供應商,如果爲false ...沒有電子郵件 – John