在ASP.Net MVC和C#中动态生成html表单

时间:2015-08-03 17:46:17

标签: c# asp.net-mvc razorengine

我有一个这样的课程

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>
    }
....

1 个答案:

答案 0 :(得分:1)

您可以使用内置的EditorForModel功能:

@model Sample_Class


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

它基本上做你想要的(根据文档)......

  

[返回]模型中每个属性的HTML输入元素。

EditorForModel的缺点是你失去了对标记的细粒度控制。话虽这么说,您可以使用模型属性和各种重载在一定程度上自定义输出。