【问题标题】:.NET Core razor submit hidden list in form to controller model.NET Core razor 将表单中的隐藏列表提交给控制器模型
【发布时间】:2022-01-24 23:11:04
【问题描述】:

我有一个包含对象列表的模型。我想在表单上隐藏这个列表,当我提交它时,我想将整个模型传递给包含提到的列表的控制器。

我尝试了多种方法来做到这一点,但所有这些方法对我来说都不正确,我做了很多研究。

我有以下模型显示在视图上:

public class ChangeRequestGeneralViewModel
{
    public string TargetId { get; set; }
    public bool HasValue { get; set; }
    public List<object> OldValues { get; set; }
    public object OldValueType { get; set; }
    public List<object> NewValues { get; set; }
    public object NewValueType { get; set; }
    public string Description { get; set; }
    public List<string> ValueTitle { get; set; }
}

每次我想隐藏 OldValuesNewValues 列表时,控制器模型的列表都会返回 null 或空列表。我在模型中正确获取了其他值,只有这 2 个属性将为 null 或空列表。

我试着用这种方式退货:

<input type="hidden" asp-for="NewValues[i]" />
<input type="hidden" asp-for="NewValues" />

我也尝试了以下方法,但效果不佳:

@HiddenFor(x => x.NewValues)
@HiddenFor(x => x.NewValues[i])
@EditorFor(x => x.NewValues)
@EditorFor(x => x.NewValues[i])

【问题讨论】:

    标签: c# html asp.net-core .net-core


    【解决方案1】:

    你试过了吗

    &lt;input type="hidden" name="OldValues" value="@Model.OldValues" /&gt;

    如果它包含在表单中,请确保它在该表单区域内。然后当你点击提交时,使用模型名称作为输入名称,它应该正确绑定。

    让我知道这是否有效

    【讨论】:

    • 也试过这个方法,又试了下还是不行。
    • 发送你完整的sn-p代码?你是怎么提交的!这对我有用!
    【解决方案2】:

    问题在于对象类型列表。无法将数据绑定到模型。如果我给它一个像 DateTime 这样的普通类型,那么在这种情况下它会正确绑定它。

    正确的做法是创建自定义绑定模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多