0

我有一个模型:

public class CustomerAttributes
{
    public Int Id { get; set; }
    public string value { get; set; }
}

我的创建视图如下所示:

    <div class="editor-label">
        @Html.Label("Name")
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Value)
        @Html.ValidationMessageFor(model => model.Value)
    </div>

    <div class="editor-label">
        @Html.Label("Age")
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Value)
        @Html.ValidationMessageFor(model => model.Value)
    </div>

    <div class="editor-label">
        @Html.Label("Height")
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Value)
        @Html.ValidationMessageFor(model => model.Value)
    </div>

所以每个文本框都将是数据库中的一条新记录。有可能做这样的事情吗?我该如何处理?另外我最大的问题是每个字段可能是一个文本框或一个组合框或一个收音机......等等......名称可能是一个文本框,但年龄可能是一个组合框......我知道我现在有所有文本框但是这可能会改变。

4

2 回答 2

0

我个人建议为您的 CustomerAttributes 模型创建一个 IEnumerable ViewModel。

这样,您可以将多个值传递回控制器。

每次添加新表单元素(假设您是动态添加它们)时,您只需在模型中创建一个新项目。

于 2012-12-11T15:56:23.187 回答
0

评论中提供的链接很有帮助:

http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/

除此之外,可能有一个 ViewModel 可以保存一个字符串或一个枚举或其他东西来指定要显示的控件类型以及显示不同控件的一些局部视图。然后根据该说明符遍历并显示视图中的每个控件。

于 2012-12-11T21:34:38.450 回答