我正在使用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。
感谢您的帮助。
答案 0 :(得分:37)
应该是这样的:
@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" })
更新:
假设您的班级AdvSlot
包含属性IsPublished
,您可以在循环中写入:
<td>
@Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td>
答案 1 :(得分:20)
@Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })
这应该有效。但是我遇到了@disabled =&#34;禁用&#34;的问题。如果我默认选中复选框并同时禁用复选框,则不会发布其值。在控制器,它将是假的。使用&#34;返回false&#34;用户无法更改该值,并且它还将默认发布已设置为加载的值。
答案 2 :(得分:3)
我使用MVC4,您可以通过简单的
获得相同的效果@Html.DisplayFor(m => m.IsPublished)
无需自己选择复选框或设置已禁用。不确定,如果这是MVC4中的新功能,那么也许它也适用于MVC3。
答案 3 :(得分:0)
在MyViewModel中,您可以删除setter:
public bool IsPublished
{
get {
//... get from db
}
}
并在您的视图中:
@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"})
答案 4 :(得分:0)
我只添加可能对某人有用的案例。.如果您的checkboxFor中也具有html属性,那么
@Html.CheckBoxFor(model => model.item, new { onclick = "return false", Title = "is not editable",htmlAttributes = new { @class = "form-control" } })
@Anupam Roy的答案会很好。只需添加我的案子。希望它会有用。