将是/否下拉列表转换为复选框c#mvc

时间:2017-03-03 02:11:40

标签: c# asp.net-mvc checkbox html-helper

我在这里找到了关于将布尔值转换为是/否显示的问题,但没有关于将是/否数据转换为布尔复选框的问题。我们使用的是没有布尔数据类型的ESRI地理数据库,因此我们必须对所有内容使用“是/否”字符串。这意味着我不能在我的编辑器中使用普通的“CheckBoxFor”HTML Helper。

我认为解决方案可能是编写一个自定义助手,但我对MVC并不熟悉,我以前从未这样做过。这就是我所拥有的:

控制器:

public static class FormHelpers
{
    public static IHtmlString YesNoCheckBoxFor(this HtmlHelper helper, string fieldName, string YesNoValue)
    {
        string htmlString = null;
        if (YesNoValue == "Yes")
        {
            htmlString = String.Format("<input name='{0}' type='checkbox' checked='checked' value='Yes'>", fieldName);
        }
        else
        {
            htmlString = String.Format("<input name='{0}' type='checkbox' value='Yes'>", fieldName);
        }
        return new HtmlString(htmlString);
    }
}

查看:

@foreach (var field in header.Fields)
{
    <div class="fieldOrderBox col-xs-12" data-fieldname="@field.Field">
        <div class="col-xs-4">                
            @Html.YesNoCheckBoxFor("Visible", field.Visible)
        </div>
        <div class="col-xs-8">
            <label>@Html.DisplayFor(fieldItem => field.FieldDisplay)</label>
        </div>
    </div>
}

复选框显示正确且已正确选中/取消选中。我无法弄清楚的是如何使值返回为“是”或“否”,以及如何使用lambda表达式指示字段来创建像CheckBoxFor(field => field.Visible, ...)这样的普通强类型帮助器。

对于上下文,我想我最终会尝试将所有“可见”命名字段的值放入一个序列化数组中,通过ajax发送给控制器(我想如果你发送的内容与它放的相同它在一个数组?),但是现在我只想弄清楚如何得到“是”和“否”值,因为这是我可以肯定重用的更简单的形式。

0 个答案:

没有答案