根据mvc中的型号选中复选框?

时间:2017-10-18 06:48:40

标签: asp.net-mvc

我有一个应该有复选框的编辑表单。

我的页面模型是

public class MyModel{
   public string Name {get;set;}
   public List<AdType> AdTypeList { get; set; }
}


Enum AdType{
  [Display(Name = "None")]
        None,

        [Display(Name = "Additional")]
        Additional_Photo,
}

所以我必须检查来自数据库的数据的复选框。 如果我进行更改并提交,也会发生更新。 要以这种方式工作,我需要在我的html助手中为复选框做出哪些更改?

foreach (AdType role in Enum.GetValues(typeof(AdType)))
{
    <label>
        <input name="Roles" type="checkbox" value="@role" checked="@(Model != null)" />
        @{var x = EHelper.GetDisplayValue<AdType>(role);}
        @x
    </label>
}

我是mvc的新手,如果我做了一些愚蠢的事情,请注意。

2 个答案:

答案 0 :(得分:1)

你可以在模型中放入if else条件来创建基于条件的html控件

foreach (AdType role in Enum.GetValues(typeof(AdType)))
{
    <label>
        @if(Model != null)
        {
            <input name="Roles" type="checkbox" value="@role" checked="checked" />
        }
        else
        {
            <input name="Roles" type="checkbox" value="@role" />
        }
        @{var x = EHelper.GetDisplayValue<AdType>(role);}
        @x
    </label>
}

答案 1 :(得分:0)

@foreach (AdType role in Enum.GetValues(typeof(AdType)))
                            {
                            <label  class="col-sm-12">
                                <input name="AdTypeList" type="checkbox" value="@role" checked="@(Model != null && Model.AdTypeList!= null && Model.AdTypeList.Any(i => i.HasFlag(role)))" />
                                @{var text = EHelper.GetDisplayValue<AdType>(role);}
                                @text
                            </label>
                            }