@ Html.CheckBoxFor的Razor语法

时间:2017-02-27 12:18:44

标签: c# html asp.net asp.net-mvc razor

我使用Visual Studio 2013和C#。我有一个简单的网页,我想显示名为“紧急”的部分的单选按钮。

此Urgency部分的值位于SQL中名为urgency的表中。我可以以@ Html.DropDownListFor的形式从数据库中成功显示这些值。

这是我用于@ Html.DropdownList的代码:

 @Html.DropDownListFor(model => model.client.Urgency, new SelectList(Model.allUrgencies, "Id", "Urgency", 0), " - Select Urgency -") 

我试图将@ Html.DropDownListFor转换为@ Html.CheckBoxFor,这被证明是非常困难的,而且我正努力让它发挥作用。

我设法将下拉列表转换为以下代码,但这仍会产生错误。

@Html.CheckBoxFor(model => model.client.Urgency, new SelectList(Model.allU, "Id", "Urgency1"))

这些是错误:

  

无法隐式转换类型'短?'到了布尔'

     

无法将lambda表达式转换为委托类型' System.Func'因为块中的某些返回类型不能隐式转换为委托返回类型。

这是我的模型中的列表。

 [Display(Name = "Urgency:")]
 public List<Urgency> allUrgencies { get; set; }

以下是我的数据库表的屏幕截图。

database screen shot

欢迎任何建议。

3 个答案:

答案 0 :(得分:1)

我使用以下方法支持Select All / None功能,它就像魅力一样:

<强> 型号:

public class EditUserViewModel
{
    public EditUserViewModel()
    {
        this.GroupsList = new List<SelectListItem>();
    }

    // Add a GroupsList Property:
    public ICollection<SelectListItem> GroupsList { get; set; }

    //other properties
}


查看:

<div class="form-group">
    @Html.Label("Groups", new { @class = "col-md-3 control-label" })
    <div class="col-md-6">

        <div class="checkbox">
            <label>
                <input type="checkbox" id="checkAll" name="" class="" />
                <span class="cr"><i class="cr-icon glyphicon glyphicon-ok"></i></span>
                <text id= "checkText">All?</text> 
            </label>
        </div>

        @foreach (var item in Model.GroupsList)
        {
            <div class="checkbox">
                <label>
                    <input type="checkbox" name="selectedGroups" value="@item.Value" />
                    <span class="cr"><i class="cr-icon glyphicon glyphicon-ok"></i></span>
                    @item.Text
                </label>
            </div>
        }
    </div>
</div>

<script>
    $("#checkAll").change(function () {
        var checked = $(this).prop("checked");
        $("input:checkbox").prop('checked', checked);
        $('#checkText').text(checked ? 'None?' : 'All?');
    });
</script>

希望这会有所帮助......

答案 1 :(得分:0)

尝试:

为什么使用CheckBoxFor,您需要使用RadioButtonFor

遍历您的列表,为每个绑定到它所代表的相同模型属性的项目生成@Html.RadioButtonFor

答案 2 :(得分:0)

经过一段时间的游戏并建议使用radiobutton选项。我已设法通过以下代码完成此任务......

@Html.RadioButtonFor(model => model.client.Urgency, 1 ,new { id = "rbUrgent"})
@Html.Label("rbUrgent", "Urgent")

@Html.RadioButtonFor(model => model.client.Urgency, 2 ,new { id = "rbNotUrgent"})
@Html.Label("rbNotUrgent", "Not Urgent")