C# 在mvc ef中为显示名称动态选择两个标签
我使用的是实体框架,MVC。如何在一个数据字段的两个标签之间动态更改(基于从另一个数据库检索到的关于同一车辆的数据)?理想情况下,我希望我的模型类中包含类似的内容(这是伪代码,不需要编译): 我确实想过这样更改cshtml文件中的标签: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>
@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>