c# - ASP.NET MVC 2 : What does the C# View look like that edits nested Entities?

标签 c# asp.net-mvc uiview ilist

在过去的几周里,我多次尝试让服务器端 MVC 2 View 来处理具有嵌套 IList 元素的对象,但都没有取得太大成功。我缺少一些基本的理解,我希望这个问题能得到解决。

我想要的是一个显示产品列表的表单,您可以在其中在线更改信息,包括层次结构(每个产品列表都有一个子产品列表,每个产品都有一个图像列表,等)我正在尝试重新创建一个旧的 MS Access 表单,其中大表单有一个产品列表,子表单显示相关产品,所有这些都允许在线编辑。 Access 会在关注不同记录时保存每条记录。

假设您有一个如下所示的域模型:

public class Product {
    ... // Lots of fields like public string name {get; set;}
    public IList<Department> departments {get; set;}
    public IList<SubProduct> subProducts {get; set;}
}
public class SubProduct {
    ... // Lots of fields like public string name {get; set;}
    public IList<Image> images {get; set;}
}
public class Image {
    ... // Lots of fields like public string name {get; set;}
}

还有一个看起来像这样的 View 模型:

public class EditProduct {
    IList<Product> products {get; set;}
}

在 MVC 2 View 中,您将如何对编辑字段进行编码,以便您可以将单个模型发布回 Controller ?我很熟悉

<input id="products[0].subProducts[0].images[0].name" /... >

机械师,但每个 IList 都需要一种方法来在同一屏幕上增删改查元素。这是一个大数据输入屏幕,速度与能够查看列表中的所有产品一样重要。我需要添加按钮、删除按钮,以及在编辑任何输入后发布整个表单的方法。

如果我从 JQuery 的角度来看:

  • 我将模型序列化为 JSON 以获取前 N 个 IList 元素的初始表单
  • 当其他产品到达容器 div 的底部时,我会在同一个列表中加载其他产品
  • 我在保存/发布时接受整个模型,或者接受单个实体的相同表单,例如为每个 IList 元素使用单独的 html 表单标签

但出于某种原因,我只是不知道如何在服务器端执行此操作。 View 本身的任何链接或示例代码都会很棒。没有 IList 的元素似乎工作得很好,尤其是使用 UI 模板时。我会在每个可编辑实体周围创建一堆单独的 html 表单标签,并且让帖子一次只处理一个元素吗?

最佳答案

<% for (int count = 0; count < Model.Students.Count; count++ )
   {                                              %><%= 
      Html.EditorFor(m => m.Students[count])      %><%
   } 
%>

创建表单名称如下:

name="Students[0].Name"
name="Students[1].Name"
name="Students[2].Name"

绑定(bind)回原来的 ListView 模型

关于c# - ASP.NET MVC 2 : What does the C# View look like that edits nested Entities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2246091/

相关文章:

c# - 在 C# 中执行 ParseInt 时输入字符串的格式不正确

c# - 如何配置 Teamcity 忽略一些测试

c# - Any() 扩展方法是否处理空值?

c# - 使用 MVC 动态添加到页面

C# HTML 字符串显示

javascript - MVC Ajax 导致回发超出表单范围?

ios - UIView 的宽度不会根据约束改变

c# - 如何从 C# 读取数组列表并将其写入 javascript 对象

ios - 如何创建对角线切割 View 以在配置文件屏幕中使用?

ios - 捕获并记录 UIView 上的触摸事件