c# - 在 mvc ef 中动态选择显示名称的两个标签

标签 c# asp.net-mvc entity-framework asp.net-mvc-4

我正在使用 Entity Framework ,MVC。如何在一个数据字段的两个标签之间动态更改(基于从同一车辆的另一个数据库检索的数据)?理想情况下,我希望我的模型类中包含类似这样的内容(这是伪代码,预计不会编译):

[Display(Name = "resCatalyst", ResourceType = typeof(VehiclesModelResource))]
    public string Catalyst { get; set; }
...
public void SetElementDisplayName(bool DieselOlderThan2009)
    {
        if (DieselOlderThan2009)
        {
            Catalyst.SetDisplayName(Name = "resNMHCCatalyst", ResourceType = typeof(VehiclesModelResource));
        }
        else
        {
            Catalyst.SetDisplayName(Name = "resCatalyst", ResourceType = typeof(VehiclesModelResource));
        }
    }

我确实想过像这样更改 cshtml 文件中的标签:

@if(Model.vltDataOne.FuelType == "D" && Model.vltDataOne.VehicleYear >= 2009)
            {
                <p>
                        <b> @Html.LabelFor(model => model.testObd.Catalyst, @DTResource.resNMHCCatalyst) </b>
                        @Html.DisplayFor(model => model.testObd.Catalyst) 
                </p>
            }
else
            {
                <p>
                        <b> @Html.LabelFor(model => model.testObd.Catalyst, @DTResource.resCatalyst) </b>
                        @Html.DisplayFor(model => model.testObd.Catalyst) 
                </p>
            }

但我正在响应业务规则,我真的认为它应该在模型中,而不是在 View 中。有什么方法可以将此逻辑移动到模型中吗?感谢您的任何想法/见解。

最佳答案

将其设置为模型的只读属性,其返回值由其他属性决定:

注意:以下是关于您的代码的假设。根据需要重新调整:

public class YourModel {
    public string FuelType { get; set; }
    public int VehicleYear { get; set; }

    public string CatalystLabelText {
        get {
            return (this.FuelType == "D" &&
                   this.VehicleYear >= 2009) ? _resNMHCCatalyst : _resCatalyst;
        }
    }
}

然后你的观点(正确地)变成了观点......而不是决策者:

<b> @Html.LabelFor(model => model.testObd.Catalyst, Model.CatalystLabelText) </b>

关于c# - 在 mvc ef 中动态选择显示名称的两个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21129447/

相关文章:

entity-framework - 如何将 OPTION RECOMPILE 添加到 Entity Framework 中

c# - RedirectToAction 不更改 url

c# - 结帐流程工作流程,存在重定向问题

c# - Entity Framework 跟踪更改

c# - 从 sql server 2008 中获取/选择数据到数据 gridview

c# - 如何使用带有 ValidateDataAnnotations 的配置

asp.net-mvc - ASP.NET MVC 显示配置文件中的用户名

entity-framework - Entity Framework 取消长时间运行的查询

c# - 通过继承创建一个惰性 DbContext 和一个急切 DbContext?

c# - Winforms 方法/事件过滤器属性