2013-11-17 5 views
1

У меня есть модель со свойствами, как этотПолучение свойств модели с использованием пользовательских имен полей

[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?

ответ

1

Другой способ сделать это, если вы не можете использовать массив, заключается в использовании слабо типизированных версии HtmlHelpers:

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

вы можете заменить Display с Editor если вы хотите текстовое поле для издания цели.

1

Да, это возможно с помощью массива. Вместо того чтобы создавать отдельное свойство для каждого из вариантов, вы должны иметь одно свойство в модели:

public string[] Options { get; set; } 

Тогда вы сможете петлю через него и доступ к параметрам с индексом.

При создании входов для этой строки, вы должны использовать цикл с индексом, чтобы получить MVC генерировать правильный идентификатор и имя атрибуты входов:

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

Спасибо за ваш быстрый ответ! Поскольку я сначала использую EF DB, что делать, если я не могу добавить массив к модели, и свойства не могут быть изменены. Могу ли я получить доступ к свойству с помощью пользовательского имени в представлении MVC? – horizon1711

+0

В этом случае, вероятно, лучше обойти привязку модели и использовать 'Form [" Option_Value "+ i]' для получения значений. Или создать модель представления с разумной информационной моделью, которая делает сопоставление с db (которое выглядит не очень хорошо спроектированным) –

Смежные вопросы