Razor如何创建一个CheckBox并使其成为READONLY?

Gib*_*boK 27 asp.net-mvc razor asp.net-mvc-3

我正在使用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>    
}
Run Code Online (Sandbox Code Playgroud)

查看模型:

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

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

    }
}
Run Code Online (Sandbox Code Playgroud)

在我的模型中显示属性的复选框.因为我做错了所以我只能显示一个像TRUE的文本.

你能告诉我如何使用Razor创建CheckBox吗?我还需要它作为READONLY.

谢谢你的帮助.

Lef*_*tyX 40

应该是这样的:

@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" })
Run Code Online (Sandbox Code Playgroud)

更新:

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

<td>
    @Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td> 
Run Code Online (Sandbox Code Playgroud)

  • 错误的解决方案,禁用的复选框不会在帖子中传回. (5认同)

Anu*_*Roy 21

 @Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })
Run Code Online (Sandbox Code Playgroud)

这应该工作.但是我遇到了@disabled ="disabled"的问题.如果我默认选中复选框并同时禁用复选框,则不会发布其值.在控制器,它将是假的.使用"return false"用户将无法更改该值,并且它还将发布默认情况下已设置为加载的值.

  • 你的答案应该被接受.如果我们使用property @ disabled ="disabled",则textboxfor始终将FALSE传递给服务器 (5认同)

out*_*ind 6

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

@Html.DisplayFor(m => m.IsPublished)
Run Code Online (Sandbox Code Playgroud)

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