C#MVC - 如何使用id显示不可编辑的复选框,以便我可以使用Jquery获取它

时间:2015-11-04 17:46:12

标签: c# asp.net-mvc

我遇到了一个与布尔绑定的字段的问题。

我想在我的模型中显示一个表示bool字段的复选框。我不希望用户能够编辑它。但我需要能够使用jquery编辑它的已检查状态 - 为此它需要有一个id。

我似乎无法做到。这是我尝试过的:

@Html.DisplayFor(m => m.Deleted, null)

这显示了正确的选中状态,但复选框上没有ID。

我注意到使用EditorFor您可以按以下方式应用HTML属性,但它在DisplayFor中不起作用 - 它们会被忽略。

@Html.DisplayFor(m => m.Deleted, new { htmlAttributes = new { @id = "cbCourtDeleted" } })

所以我认为我可以使用和编辑ForFor并应用readonlydisabled属性(我之前使用textboxfor完成了这项工作并且效果很好:

@Html.EditorFor(m => m.Deleted, new { htmlAttributes = new { @class = "form-control", @readonly = "readonly", @disabled = "disabled", @id = "cbCourtDeleted" } })

但在编辑器中使用时(至少为复选框),未显示已选中状态 - 它显示为未选中状态,但确实具有所需的ID。

问题:如何从我的模型中显示一个具有id的bool字段,以便我可以通过jquery / javascript访问它?

2 个答案:

答案 0 :(得分:1)

@Html.CheckBoxFor(m => m.Deleted, new { @id = "chkDeleted", @disabled = "true"})

答案 1 :(得分:1)

HTML输入元素将idname属性设置为模型类的属性名称,可能不需要使用属性设置id,

@Html.CheckBoxFor(m => m.Deleted)

如果复选框不允许编辑,并且使用disabled属性来阻止编辑,则可能有助于向模型添加另一个属性以将值返回给服务器,因为浏览器不会返回禁用输入的值。这个新属性可以是隐藏字段,可以使用JQuery进行设置。

@Html.CheckBoxFor(m => m.Deleted, new { disabled = "disabled" })
@Html.HiddenFor(m => m.DeletedAndBackToServer)