【问题标题】:Asp.net MVC - How to edit list of properties from Model in edit view?Asp.net MVC - 如何在编辑视图中编辑模型中的属性列表?
【发布时间】:2020-10-08 09:48:33
【问题描述】:

我有一个名为 Line 的模型,其中包含 Station 的集合:

public class Line
{
    public int id { get; set; }
    public virtual ICollection<Station> Stations { get; set; }
}
public class Station
{
    public int id { get; set; }
    public string name { get; set; }
    public int lineId { get; set; }
    public virtual Line Line { get; set; }
}

我想为 Line 模型创建 EDIT 页面。但我想在这里编辑相关的Stations。 现在,我有这样的东西,但它不能正常工作:

@model Factory.DomainModels.Line
@for (int i=0; i<Model.Stations.Count; i++)
{
    @Html.HiddenFor(model => model.Stations.ToList()[i].id)
    @Html.EditorFor(model => model.Stations.ToList()[i].name)
}

它以正确的值正确显示编辑器,但是当我点击提交按钮时,这些值不会发送到我的控制器,所以我无法编辑它们。

【问题讨论】:

  • “这些值不会发送到我的控制器”...它们在您的表单中吗?或者,它们是否被发送,但并未绑定到模型?有区别。使用浏览器的开发者工具查看实际发送的内容。
  • @ADyson 感谢您的评论。它们被发送,但不限于模型。
  • 我认为您需要为每个站点设置一个“集合”ID。如果没有这个集合 id,模型绑定器将无法完成它的工作:所有编辑器都将具有相同的 id。 @Html.Edior($"{Model.Stations[i].id}_Name", Model.Stations[i].name).

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


【解决方案1】:

正如 peljoe 在评论中指出的那样,它是这样的:

@model Factory.DomainModels.Line
@for (int i = 0; i < Model.Stations.Count; i++)
{
    @Html.TextBox("Stations[" + i + "].id", Model.Stations[i].id)
    @Html.TextBox("Stations[" + i + "].name", Model.Stations[i].name)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多