【问题标题】:How can you do multiple saves of a model in one submit?如何在一次提交中多次保存模型?
【发布时间】:2012-12-11 15:49:45
【问题描述】:

我有一个模型:

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>

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

【问题讨论】:

  • 您是否有一定数量的要创建的值或者是用户定义的?
  • 它不是一个固定的数量,它可以根据一些条件增长和缩小

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多