【问题标题】:ASP.NET MVC How to post complex modelASP.NET MVC 如何发布复杂模型
【发布时间】:2016-08-26 13:28:27
【问题描述】:

我遇到了一个问题。我不知道如何发布具有依赖关系的集合。 我将向您展示一个代码,然后它可能更清楚我想要实现的目标。

我有 ViewModel:

public class ProjectViewModel : BaseViewModel
{
    public int Id { get; set; }
    public string Customer { get; set; }
    public string CustomerRepresentative { get; set; }
    public string ProjectTitle { get; set; }
    public string WWSNumber { get; set; }
    public List<Los> Service { get; set; }
}

LosViewModel:

public class Los
{
    public int LosNumber { get; set; }
    public string Service { get; set; }
    public List<Pos> Pos { get; set; }
}

Pos 视图模型:

public class Pos
{
    public int PosNumber { get; set; }
    public string PosDescription { get; set; }
}

正如你看到的第一个 ViewModel 有列表。这意味着当用户填写 LosNumber 并进入服务时,他可以添加 PosNumber 和 PosDescription。

我找不到如何使用 Razor 发布此类模型的信息。 我所发现的只是如何显示这样的 ModelViewm 但不能编辑。

也许有人遇到过这种问题?有什么帮助吗?

【问题讨论】:

  • 你能展示你的观点吗?
  • 看起来您的问题比复杂的帖子更大。这并不是一个真正复杂的模型,MVC 将知道如何序列化您发布的数据。您的 post 方法只需要将模型类型作为接收参数。 public ActionResult MyPostMethod(ProjectViewModel 模型)
  • 不确定这是您遇到的问题,还是您不知道如何在视图级别执行帖子。
  • 您的视图上是否有多个表单?
  • 好的,请分享您的View.cshtml 页面,您想在其中实现相同的功能。

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

您需要将集合放入视图中的 for 循环,然后通过集合上的索引引用对象。 MVC 足够聪明,可以在您回帖时确定这是一个集合。类似于...TextBoxFor(m => Model.Service[i].LosNumber)。集合中的集合很可能只是一个嵌套的 for 循环。

MVC Razor view nested foreach's model

【讨论】:

  • 当您要显示的对象的长度已知时的方法。但就我而言,我无法确定 List 中有多少元素。也许我应该问如何使用索引动态创建 EditorFor 框。
  • 您可以在列表中的 razor 内执行 for 循环,这样您就可以获得索引 == i 来生成控件。
  • @pmeyer 告诉我你是如何在不知道对象长度的情况下进行循环的?
  • 这很容易@DaniilT。 for (int i = 0; i
  • 再次......这是一个重复的问题给你stackoverflow.com/questions/8894442/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多