【问题标题】:Custom fields in viewmodel based off of model fields基于模型字段的视图模型中的自定义字段
【发布时间】:2015-01-26 19:49:29
【问题描述】:

我是 ASP.NET MVC 的新手,需要一些帮助。

我有一个名为“项目”的模型,简化如下:

public class Project
{
    public int ProjId { get; set; }
    public string StatusID { get; set; }
}

StatusID 是 1 个字符的字符串,可以是 I(进行中)、C(已完成)或 K(已终止)。因此,当我从数据库中获取项目列表时,它会返回 1 个字符的状态代码。

但是,当我将该信息传递给我的视图时,我想显示完整的描述而不是 1 个字符。

处理这种情况的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-viewmodel


    【解决方案1】:

    最好的方法是使用Statuses 表创建一对多关系。然后使用此信息创建一个单独的视图模型。

    var vm = new ProjectVM
    {
        ProjId = project.ProjId,
        StatusDescription = statuses.Find(project.StatusId).Description
    };
    

    Notices statuses 是一个用于查找正确状态描述的存储库 API。

    【讨论】:

    • 感谢您的建议。我不确定如何使用存储库 API,但我还有另一个相关问题。因为我个人知道这些代码代表什么,所以我希望在没有另一个“查找”表的帮助的情况下显示完整的描述。有没有办法使用实际模型的值,并以某种方式调整它们以将新字段添加到传入的视图中?例如,假设有人想要获取一个名为“Percent”的模型字段,并在显示时附加一个“%”。有没有办法我们可以即时添加一个名为“DisplayPercent”的字段,它需要一个 # 并附加一个 %?
    • 您可以在 Razor 代码中完成所有这些操作,但对我来说感觉很脏。您可以声明类似 enum 的内容来显示它
    • @IsaiahLee,你应该问一个新问题,但如果Percent 的值为0.15[DisplayFormat(DataFormatString = "{0:P}")]public decimal Percent { get; set; }@Html.DisplayFor(m => m.Percent) 将显示15%
    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2020-09-09
    • 2013-07-19
    • 2021-06-28
    • 2015-09-26
    • 2012-06-09
    • 2012-10-13
    相关资源
    最近更新 更多