C# MVC5:如何在视图中显示字符串而不是数字

C# MVC5:如何在视图中显示字符串而不是数字,c#,asp.net-mvc,entity-framework-6,asp.net-mvc-5,C#,Asp.net Mvc,Entity Framework 6,Asp.net Mvc 5,我是个新手。使用MVC5、.NET4.5.1和实体框架6.1.3。我从一个Oracle数据库开始 有一个名为“活动”的字段,当前为十进制字段。我想显示“非活动”或“活动”,这取决于它是0还是1 我可以使用If语句在视图中执行此操作,但是我有索引、编辑、详细信息和创建的视图,我必须对这些视图进行修改,在编辑和创建视图的情况下,我需要获取输入并将其转换回小数 有没有更简单的方法 型号: [DisplayName("Active")] public decimal? ACTIVE { get;

我是个新手。使用MVC5、.NET4.5.1和实体框架6.1.3。我从一个Oracle数据库开始

有一个名为“活动”的字段,当前为十进制字段。我想显示“非活动”或“活动”,这取决于它是0还是1

我可以使用If语句在视图中执行此操作,但是我有索引、编辑、详细信息和创建的视图,我必须对这些视图进行修改,在编辑和创建视图的情况下,我需要获取输入并将其转换回小数

有没有更简单的方法

型号:

[DisplayName("Active")]
    public decimal? ACTIVE { get; set; }
视图:


在模型中,对于decimal属性,您可以为set和get编写自定义代码,而不需要对视图进行任何更改

    get
    {
        return this.isActive==1? "Active":"InActive";
    }
    set
    {
        this.isActive = value=="Active"?1:0;
    }

否则请对此属性使用枚举

您只需创建一个从十进制转换为字符串的方法,反之亦然,并在视图和/或控制器上使用它

public static string DisplayStatus(decimal? number)
{
    return number == 1 ? "Active" : "Inactive";
}

public static decimal ConvertStatus(string status)
{
    return status == "Active" ? 1 : 0;
}

通过利用HTML帮助程序,您可以减少为创建标准HTML页面而必须执行的繁琐的HTML标记键入量

符合您要求的示例代码:

在你看来:

@Html.ActiveOrInactive(item.ACTIVE)
助手扩展代码:

public static MvcHtmlString ActiveOrInactive(this HtmlHelper htmlHelper, decimal invNo)
{
    var text = (invNo == 0) ? "InActive" : "Active";
    return new MvcHtmlString(text);
}
注意:没有测试代码,希望它能正常工作


有关辅助程序扩展的更多信息

如果您担心重复布局代码,请研究在模型上使用
[UIHint]
属性。哦,很好。我认为这需要在模型级别上完成。我来试试。更新:它似乎不起作用。它不允许我为get返回字符串,也不允许为set中的字符串值返回测试。“无法将字符串类型隐式转换为十进制类型。”和“运算符==不能应用于十进制和字符串类型的操作数”。酷。我不知道这个技巧。这应该是有用的。
public static MvcHtmlString ActiveOrInactive(this HtmlHelper htmlHelper, decimal invNo)
{
    var text = (invNo == 0) ? "InActive" : "Active";
    return new MvcHtmlString(text);
}