在ASP.NET MVC中将true或false值映射到活动的非活动状态

时间:2017-09-10 15:35:05

标签: asp.net-mvc

我正在为学生记录进行测试申请。我在html表格中显示它。但是,我想将像True或False的值转换为活动/非活动。对于男性/女性也是0或1的值。

DB

    [Id]          INT           IDENTITY (1, 1) NOT NULL,
    [StudentName] VARCHAR (100) NOT NULL,
    [RollNo]      INT           NOT NULL,
    [Address]     VARCHAR (200) NOT NULL,
    [Sex]         INT           NOT NULL,
    [Active]      BIT           NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC)

模型

public class Student
    {
        public Student();

        public bool? Active { get; set; }
        public string Address { get; set; }
        public int Id { get; set; }
        public int RollNo { get; set; }
        public int Sex { get; set; }
        public string StudentName { get; set; }
    }

查看

<div class="table-responsive">
        <table class="table table-condensed table-bordered table-responsive table-hover" >
            <thead>
                <tr>
                    <th>Student Name</th>
                    <th>Student Roll No</th>
                    <th>Student Sex</th>
                    <th>Student Address</th>
                    <th>Status</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model.Students)
                {
                    <tr>
                        <td>@item.StudentName</td>
                        <td>@item.RollNo</td>
                        <td>@item.Sex</td>
                        <td>@item.Address</td>
                        <td>@item.Active</td>
                    </tr>
                }


            </tbody>

        </table>

控制器

[Authorize]
        public ActionResult Index()
        {
            SchoolDbEntities db = new SchoolDbEntities();
            StudentVM vm = new StudentVM();
            vm.Students = db.Students.ToList();
            return View(vm);
        }

2 个答案:

答案 0 :(得分:1)

您可以使用三元运算符

 <td>@(item.Active ? "Active" : "InActive")</td>
 <td>@(item.Sex==1 ? "Female" : "Male")</td>

如果Active属性是可以为空的bool,则需要在进行值比较之前检查属性是否为null。

<td>
    @if (item.Active!= null)
    {
        @(item.Active.Value ? Html.Raw("Active") : Html.Raw("InActive"))
    }
</td>

如果不是NULL,则上述代码将根据值Active属性值呈现Active或Inactive。如果是NULL,则不会打印任何内容。

您可以将其移动到辅助方法,以便您的视图更清晰。

修改:根据您的评论,您需要

  

如果为null或false则为“InActive”,否则为“Active”

您可以在检查“True”

的值之前添加空检查
<td>@(item.Active!=null && item.Active.Value ? "Active" : "InActive")</td>

答案 1 :(得分:1)

只需输入字段值:

<td>@item.Sex</td>

只会在值上调用ToString()。但是你可以包含一个任意表达式:

<td>@(item.Sex == 0 ? "Male" : "Female")</td>

(处理0和1之外的其他值将需要更复杂的表达式,可能在模型类型的辅助函数中。)

这也适用于布尔值:

<td>@(item.Acive ? "Active" : "Inactive")</td>