我试图得到一个页面呈现不同的标签,像这样:
<工具细节/strong>: ______________//描述的标签
<硬件细节/strong>: _______//标签
之后是描述视图:
@model MyViewMode
@MyHelperFor(c => c.Tool.Description)
@MyHelperFor(c => c.Hardware.Description)
视图模型:
public class MyViewMode
{
public SubPropertiesVM Tool { get; set; } = new Tool ();
public SubPropertiesVM Hardware { get; set; } = new Hardware ();
}
public class SubPropertiesVM
{
public int ID { get; set; }
public string Description { get; set; }
public string SubPropertyLabel { get; set; }
}
如果我让系统默认属性名,那么我将为所有实例获得相同的标签。
我可以在SubPropertiesVM
类[DisplayName("Some label")]
中装饰Description
,但随后,同样的文本"Some label"将在页面中呈现两次。
我想在每次初始化时给SubPropertyLabel
分配一个不同的值,然后以某种方式让Razor利用它。但是,我的理解是[DisplayName("")]
不把变量作为参数。
我的助手有一个可选参数,并将其设置为标签。这确实很好。然而,每个视图模型在几个视图中使用。我不希望在每个视图上手动和重复地设置标签,而是为每个视图模型只设置一次。
是否可以在MyViewModel
中设置SubPropertiesVM
属性的标签文本?
您可以在创建属性时初始化这些属性,如下所示:
public SubPropertiesVM Tool { get; set; } = new Tool ()
{
Description = "Tool",
SubPropertyLabel = "ToolLabel"
};
对Hardware
属性做同样的操作,当然要加上另一个描述等。
那么Tool
和Hardware
将得到不同的描述。