Asp.net mvc 将布尔值作为复选框显示

Asp.net mvc 将布尔值作为复选框显示,asp.net-mvc,razor,checkbox,Asp.net Mvc,Razor,Checkbox,“Supplier”表中的每条记录都有一个bool“SupplierEmailProvided”列。要在屏幕上显示值,请执行以下操作: @Model.Suppliers.Where(s => s.Id == products.PreferredSupplierId).FirstOrDefault().SupplierEmailProvided 这可以很好地工作,但是它会根据其值显示“真”或“假”(在屏幕上) 我想将其更改为复选框,如果该值为FALSE,则该复选框将被禁用 尝试了如下操作:

“Supplier”表中的每条记录都有一个bool“SupplierEmailProvided”列。要在屏幕上显示值,请执行以下操作:

@Model.Suppliers.Where(s => s.Id == products.PreferredSupplierId).FirstOrDefault().SupplierEmailProvided
这可以很好地工作,但是它会根据其值显示“真”或“假”(在屏幕上)

我想将其更改为复选框,如果该值为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" })
                     }
如果station表示“operator”,则开头不能应用于lamba类型的opperad

有什么帮助吗?

你试过这个吗

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

复选框的
应该可以工作,检查括号,可能将作业一分为二:

@{
    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)

假设
SupplierEmailProvided
是一个布尔类型,虽然逻辑应该是清晰的,但尚未测试

正如您所提到的,当值为false时,复选框应处于禁用状态

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

如果supplierEmailProvided可为空,则必须将supplierEmailProvided.Valueit表示运算符“.”不能应用于“lamba expression”类型的操作数。您不能将此supplierEmailProvided应用于模型中,并在返回视图时返回它,然后在视图中直接检查是否(Model.supplierEmailProvided)。啊,很好的一个。那么,如果值为false,如何禁用复选框呢?在这种情况下,您将需要一个类似@d.Siva answer中的
if
。老实说,这个用例看起来很奇怪,所以如果它是假的,你希望它被禁用,但是如果它已经被检查,你希望它被启用(这样用户可以取消检查)?是的,这个想法是……如果它是假的,电子邮件就不存在。如果为真,则电子邮件确实存在于供应商记录中……然后用户可以勾选或取消勾选将被发回的同一复选框。如果设置为true,则发送电子邮件给供应商,如果设置为false…则不发送电子邮件我的观点是,如果禁用,则用户无法勾选它。。。也许你的意思是,如果电子邮件不存在,你希望它不被检查,如果电子邮件存在,你希望它被检查?那么我的答案中的一行就足够了。所写的
if
不起作用,因为您需要整个
@Model.Suppliers.Where
d.Siva省略的部分(我将编辑他的答案)。感谢您的回复…问题是当我使用您的代码时…所有返回true的复选框,以及所有禁用的复选框。我只想禁用“false”值??为什么所有这些都是真的?