web-dev-qa-db-ja.com

Razor CheckBoxを作成して読み取り専用にする方法は?

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としても必要です。

ご協力いただきありがとうございます。

27
GibboK

このようなものでなければなりません:

@Html.CheckBoxFor(m => m.IsPublished, new { @disabled = "disabled" })

更新:

クラスAdvSlotにプロパティIsPublishedが含まれていると仮定すると、ループに記述できます。

<td>
    @Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td> 
38
LeftyX
 @Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })

これは動作するはずです。しかし、@ disabled = "disabled"で問題が発生しました。デフォルトでチェックボックスをオンにし、同時にチェックボックスを無効にすると、その値がポストされません。コントローラーではfalseになります。 「falseを返す」ユーザーを使用すると値を変更できず、デフォルトでロード時に設定された値もポストされます。

21
Anupam Roy

私はMVC4を使用していますが、次のような簡単なもので同じ効果を得ることができます

@Html.DisplayFor(m => m.IsPublished)

checkboxを選択したり、自分でdisabledを設定したりする必要はありません。確かではありませんが、これがMVC4の新機能である場合、MVC3でも機能する可能性があります。

4
outofmind

MyViewModelで、セッターを削除できます。

public bool IsPublished 
{
   get {
        //... get from db
       }
}

そしてあなたのビューで:

@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"})
0
Mohamed Farrag