33

我正在使用 MVC 3 和 Razor

目前我正在使用

@model MyProject.ViewModels.MyViewModel

    @foreach (var item in Model.MyProperty)
{  
    <tr>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.AdvSlotId }) |
            @Html.ActionLink("Details", "Details", new { id = item.AdvSlotId }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.AdvSlotId })
        </td>
        <td>
            @item.AdvSlotId
        </td>
        <td>
            @item.Name
        </td>
        <td>
            @item.Description
        </td>
        <td>
             @Html.CheckBox(item.IsPublished, new { @disabled = "disabled" })
        </td>
        <td>
            @item.Notes
        </td>
    </tr>    
}

视图模型:

namespace MyProject.ViewModels
{
    public class MyViewModel
    {
        public MyViewModel(List<AdvSlot> advSlots)
        {
            MyProperty= advSlots;
        }

        public List<AdvSlot> MyProperty { get; set; }

    }
}

在我的模型中显示属性的复选框。正如我所做的那样是错误的,所以我只能显示像 TRUE 这样的文本。

你能告诉我如何用 Razor 创建 CheckBox 吗?我还需要将其设置为 READONLY。

谢谢你的帮助。

4

5 回答 5

43

应该是这样的:

@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" })

更新:

假设您的类AdvSlot包含IsPublished您可以在循环中编写的属性:

<td>
    @Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td> 
于 2012-07-03T10:15:18.070 回答
30
 @Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })

这应该有效。但是我遇到了@disabled =“禁用”的问题。如果我默认选中该复选框并同时禁用该复选框,它将不会发布其值。在控制器上它会变成假的。使用“return false”用户将无法更改该值,并且它还将发布在加载时默认设置的值。

于 2015-10-30T20:42:48.027 回答
6

我正在使用 MVC4,你可以用一个简单的东西得到同样的效果

@Html.DisplayFor(m => m.IsPublished)

无需关心选择复选框或自己设置禁用。不确定,如果这是 MVC4 中的一个新功能,那么它可能也适用于 MVC3。

于 2015-11-26T16:51:52.730 回答
0

在您的 MyViewModel 中,您可以删除 setter :

public bool IsPublished 
{
   get {
        //... get from db
       }
}

并在您的视图中:

@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"})
于 2012-07-03T10:16:29.503 回答
0

我将添加我的案例,这可能对某人有用..如果您的复选框中也有 html 属性,那么

  @Html.CheckBoxFor(model => model.item, new { onclick = "return false", Title = "is not editable",htmlAttributes = new { @class = "form-control" } })

@Anupam Roy 的回答会很好。只需添加我的案例。希望它会有用。

于 2020-09-07T03:36:18.663 回答