33

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

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

4

5 に答える 5

43

次のようになります。

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

アップデート:

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

<td>
    @Html.CheckBox(item.AdvSlotId + "_IsPublished", item.IsPublished, new { @disabled = "disabled" });
</td> 
于 2012-07-03T10:15:18.070 に答える
30
 @Html.CheckBoxFor(model => model.IsActive, new { onclick = "return false" })

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

于 2015-10-30T20:42:48.027 に答える
0

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

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

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

@Html.CheckBoxFor(m => m.IsPublished, new {@disabled="disabled"})
于 2012-07-03T10:16:29.503 に答える