我是全新的。在 .NET 4.5.1 和实体框架 6.1.3 上使用 MVC 5。我从Oracle数据库开始。
有一个名为"活动"的字段当前是十进制字段。我想显示"非活动"或"活动",具体取决于它是 0 还是 1。
我可以使用 If 语句在视图中执行此操作,但我有索引、编辑、详细信息和创建的视图,我必须修改这些视图,对于"编辑"和"创建"视图,我需要获取输入并将其转换回小数。
有没有更简单的方法可以做到这一点?
型:
[DisplayName("Active")]
public decimal? ACTIVE { get; set; }
视图:
@if (Html.DisplayFor(modelItem => item.ACTIVE).Equals("0"))
{
@:Inactive
}
else
{
@:Active
}
通过利用 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);
}
注意:没有测试代码并希望它会工作
有关帮助程序扩展的详细信息:https://learn.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs
在模型中,对于十进制属性,您可以为 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;
}