Razor как создать CheckBox и сделать его READONLY?
Я использую 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.
Не могли бы вы рассказать мне, как создать CheckBox с помощью Razor? Мне также нужно было бы это как READONLY.
Спасибо за вашу помощь.
Ответы
Ответ 1
Должно быть что-то вроде этого:
@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" })
ОБНОВИТЬ:
Предполагая, что ваш класс AdvSlot
содержит свойство IsPublished
вы можете написать в своем цикле:
<td>
@Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td>
Ответ 2
@Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })
Это должно сработать. Однако у меня возникла проблема с @disabled = "disabled". Если я установил флажок по умолчанию и сделаю флажок отключенным в то же время, он не опубликует его значение. На контроллере он будет ошибочным. Использование "return false" пользователь не сможет изменить значение, и оно также опубликует значение, которое установлено по умолчанию по умолчанию.
Ответ 3
Я использую MVC4, вы получаете тот же эффект с простым чем-то вроде
@Html.DisplayFor(m => m.IsPublished)
Не нужно убирать флажок или устанавливать самостоятельно. Не уверен, если это новая функция в MVC4, так что, возможно, она будет работать и в MVC3.
Ответ 4
В MyViewModel вы можете удалить установщик:
public bool IsPublished
{
get {
//... get from db
}
}
и в вашем представлении:
@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"})