2015-08-03 5 views
0

У меня есть класс, как этотДинамическая генерация HTML-форм в ASP.Net MVC и C#

public class Sample_Class { 
    public string Property1 { get; set;} 
    public string Property2 { get; set;} 
} 

, и я хочу иметь HTML форму, как это:

<fieldset> 
<legend>Change Password Form</legend> 
    <ol> 
     <li> 
      @Html.LabelFor(m => m.Property1) 
      @Html.TextBoxFor(m => m.Property1) 
      @Html.ValidationMessageFor(m => m.Property1) 
     </li> 
     <li> 
      @Html.LabelFor(m => m.Property2) 
      @Html.TextBoxFor(m => m.Property1) 
      @Html.ValidationMessageFor(m => m.Property1) 
     </li> 
    </ol> 
    <input type="submit" value="Submit" /> 
</fieldset> 

, как я могу это сделать динамически? например, как это:

.... 
    @foreach (property in Sample_Object.Properties) { 
     <li> 
      @Html.LabelFor(property) 
      @Html.TextBoxFor(property) 
      @Html.ValidationMessageFor(property) 
     </li> 
    } 
.... 
+0

Вы можете использовать 'foreach', как показано в приведенном выше примере. Вы хотите создать частичный вид? –

+0

@SamuelDavidson Я предпочитаю иметь частичный вид, который получает объект и динамически генерирует html-форму на основе свойств объекта. –

+0

У вас нет свойства 'collection' в вашем классе. Чего это вы хотите достичь? – brroshan

ответ

1

Вы можете использовать встроенный в EditorForModel функции:

@model Sample_Class 


@Html.EditorForModel() 
<input type="submit" value="Submit" /> 

Это по существу делает то, что вы хотите, что (согласно документации) ...

[Return] элемент ввода HTML для каждого свойства в модели.

Недостатком EditorForModel является то, что вы теряете мелкозернистый контроль над вашей разметкой. При этом вы можете настроить выход в определенной степени с использованием атрибутов модели и различных перегрузок.

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