如何在一次提交中对模型进行多次保存?

时间:2012-12-11 15:49:45

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-views asp.net-mvc-viewmodel

我有一个模特:

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>

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

要添加它,可能有一个ViewModel可以包含一个字符串或一个枚举或什么来指定要显示的控件类型,以及一些显示不同控件的部分视图。然后迭代并根据该说明符显示视图中的每个控件。