【发布时间】:2014-02-03 10:49:48
【问题描述】:
我正在使用实体框架,MVC。如何在一个数据字段的两个标签之间动态更改(基于从另一个数据库检索到的关于同一车辆的数据)?理想情况下,我希望我的 Model 类中有这样的东西(这是伪代码,预计不会编译):
[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>
}
但我正在响应一个业务规则,我真的认为它应该在模型中,而不是视图中。有没有办法将此逻辑移至模型?感谢您提供任何想法/见解。
【问题讨论】:
-
我建议你创建一个 ViewModel 类来实现你需要的行为。然后在您的视图中引用它。
标签: c# asp.net-mvc entity-framework asp.net-mvc-4