rja*_*en0 4 c# asp.net-mvc entity-framework asp.net-mvc-4
我正在使用Entity Framework,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));
}
}
Run Code Online (Sandbox Code Playgroud)
我确实想过改变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>
}
Run Code Online (Sandbox Code Playgroud)
但我正在回应业务规则,我认为它应该在模型中,而不是视图中.有没有办法将这个逻辑移到模型中?感谢您的任何想法/见解.
使其成为模型的只读属性,其返回值由其他属性决定:
注意:关于代码的假设如下.根据需要重新设置:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的观点(正确地)成为一个观点..而不是决策者:
<b> @Html.LabelFor(model => model.testObd.Catalyst, Model.CatalystLabelText) </b>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4676 次 |
| 最近记录: |