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としても必要です。
ご協力いただきありがとうございます。
このようなものでなければなりません:
@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" })
更新:
クラスAdvSlot
にプロパティIsPublished
が含まれていると仮定すると、ループに記述できます。
<td>
@Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td>
@Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })
これは動作するはずです。しかし、@ disabled = "disabled"で問題が発生しました。デフォルトでチェックボックスをオンにし、同時にチェックボックスを無効にすると、その値がポストされません。コントローラーではfalseになります。 「falseを返す」ユーザーを使用すると値を変更できず、デフォルトでロード時に設定された値もポストされます。
私はMVC4を使用していますが、次のような簡単なもので同じ効果を得ることができます
@Html.DisplayFor(m => m.IsPublished)
checkboxを選択したり、自分でdisabledを設定したりする必要はありません。確かではありませんが、これがMVC4の新機能である場合、MVC3でも機能する可能性があります。
MyViewModelで、セッターを削除できます。
public bool IsPublished
{
get {
//... get from db
}
}
そしてあなたのビューで:
@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"})