C# 在mvc ef中为显示名称动态选择两个标签

C# 在mvc ef中为显示名称动态选择两个标签,c#,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我使用的是实体框架,MVC。如何在一个数据字段的两个标签之间动态更改(基于从另一个数据库检索到的关于同一车辆的数据)?理想情况下,我希望我的模型类中包含类似的内容(这是伪代码,不需要编译): 我确实想过这样更改cshtml文件中的标签: @if(Model.vltDataOne.FuelType == "D" && Model.vltDataOne.VehicleYear >= 2009) { <p>

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

我确实想过这样更改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>
            }
@if(Model.vltDataOne.FuelType==“D”和&Model.vltDataOne.VehicleYear>=2009)
{

@Html.LabelFor(model=>model.testObd.Catalyst,@DTResource.resNMHCCatalyst)
@DisplayFor(model=>model.testObd.Catalyst)

} 其他的 { @LabelFor(model=>model.testObd.Catalyst,@DTResource.resCatalyst) @DisplayFor(model=>model.testObd.Catalyst)

}

但我对一条商业规则做出了回应,我真的认为它应该出现在模型中,而不是视图中。有没有办法将这种逻辑转移到模型中?感谢您的任何想法/见解。

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

注意:关于代码的假设如下。根据需要对其重新进行调整:

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>
@Html.LabelFor(model=>model.testObd.Catalyst,model.CatalystLabelText)

我建议您创建一个实现所需行为的ViewModel类。然后在你的视图中引用它。那太好了!因为FuelType和VehicleYear位于另一个模型类中,并且来自另一个数据库,所以我将使用包含指向每个模型的指针的类。这个概念就是你在这里提出的。这真的让我感到很烦,我很高兴能帮上忙。当视图中有逻辑时,通常使用MVC(通常==始终)。。你的设计有一些根本性的错误。很好,你在问关于这类事情的问题!
<b> @Html.LabelFor(model => model.testObd.Catalyst, Model.CatalystLabelText) </b>