使用自定义字段名称获取模型属性

时间:2013-11-17 17:52:24

标签: c# asp.net-mvc

我有一个像这样的属性的模型

[Display(Name = "Option Value 1")]
public string option_value1;
[Display(Name = "Option Value 2")]
public string option_value2;
[Display(Name = "Option Value 3")]
public string option_value3;
[Display(Name = "Option Value 4")]
public string option_value4;

...
...
[Display(Name = "Option Value n")]
public string option_valuen;

我想在像

这样的观点中做点什么
for (i = 0;i < n; i++) {
if (Model.getProperty("Option_Value"+i) != null) 
{
then display "Option_Value"+i
}

我可以在cakephp中顺利完成,在ASP.NET MVC中也可以吗?

2 个答案:

答案 0 :(得分:1)

是的,可以使用数组。您可以在模型中使用一个属性,而不是为每个选项创建单独的属性:

public string[] Options { get; set; }

然后,您将能够遍历它并使用索引访问选项。

为该字符串创建输入时,必须使用带索引的for循环来获取MVC以生成输入的正确id和name属性:

@for(int i = 0; i < Model.Options.Length)
{
  @Html.EditorFor(m => Model.Options[i])
}

答案 1 :(得分:1)

另一种方法是,如果你不能使用数组,那就是使用HtmlHelpers的弱类型版本:

@for (i = 0; i < n; i++)
{
     @Html.Display("option_value" + i)
}

如果您想要一个用于编辑目的的文本框,可以将Display替换为Editor