循环查看视图中的模型属性

Nic*_*own 24 .net c# asp.net-mvc-3

我有一个非常简单的视图模型

public class TellAFriendViewModel
{
    public string Email1 { get; set; }
    public string Email2 { get; set; }
    public string Email3 { get; set; }
    public string Email4 { get; set; }
    public string Email5 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我的视图上的相应输入,但我想知道是否有更好的方法(如循环)将类似的TextBoxs写入我的视图:

@using (Html.BeginForm()){
    @Html.AntiForgeryToken()

    @Html.TextBoxFor(vm => vm.Email1)
    @Html.TextBoxFor(vm => vm.Email2)
    @Html.TextBoxFor(vm => vm.Email3)
    @Html.TextBoxFor(vm => vm.Email4)
    @Html.TextBoxFor(vm => vm.Email5)
}
Run Code Online (Sandbox Code Playgroud)

Hac*_*ese 37

你应该访问

ViewData.ModelMetadata.Properties.没有理由加倍反射工作,加上它为您计算出DataAttributes元数据.

@foreach(var property in ViewData.ModelMetadata.Properties)
{
    <div class="editor-line">
        <label>@(property.DisplayName??property.PropertyName)</label>
        @Html.Editor(property.PropertyName)
    </div>
}
Run Code Online (Sandbox Code Playgroud)


Xav*_*nas 11

你应该考虑使用一个数组.

但是,如果你想使用反射,它看起来像这样:

@foreach (var prop in Model.GetType().GetProperties())
{
    @(Html.TextBox(prop.Name, prop.GetValue(Model, null)))
}
Run Code Online (Sandbox Code Playgroud)