【问题标题】:MVC Get and Post dataMVC 获取和发布数据
【发布时间】:2017-04-29 07:45:13
【问题描述】:

很抱歉这个问题真的很无聊,但这让我很难受。

我有一个控制器检查,使用方法配置它通过包含 3 个列表的模型。

我知道我应该使用 HiddenFor 来保留信息,但我不知道如何使用列表来做到这一点。

我有这些 HiddenFor 字段,但它们似乎无法保留信息

@Html.HiddenFor(model => Model.inspection)
@Html.HiddenFor(model => Model.assignedParts)

for (int i = 0; i < Model.ConfigList.Count; i++)
{
    @Html.HiddenFor(model => Model.ConfigList[i])
}

【问题讨论】:

  • 你到底为什么要通过生成大量隐藏的输入,将它们发送到视图,然后将它们原封不动地发送回控制器来降低你的应用程序的性能。

标签: asp.net-mvc post razor get


【解决方案1】:

每个 Razor 指令都会转换为 html 以显示在浏览器中。在这种情况下,您的 Model.assignedParts 指令在 html 中可能看起来像这样:

&lt;input type = "text" value="List&lt;StevenHubs.Models.Part&gt;" /&gt;

您可以通过运行您的应用程序并查看源代码来准确了解它是什么。分配给 value 的文本只是 Model.assignedParts.ToString()。解决问题的最简单方法是更改​​视图以仅使用实际发生更改的模型部分。

如果您想在视图中包含列表,则需要对列表执行 foreach,如果列表成员具有属性,则每个属性都必须有一个 @Html.HiddenFor,例如:

@foreach(var part in Model.Part) { @Html.HiddenFor(part.Property1) @Html.HiddenFor(part.Property2) }

【讨论】:

  • 是的,我认为它会是这样的,当然希望它可能只是一件简单的事情哈哈。谢谢大家!
  • 如果这些解决方案有效...stackoverflow.com/questions/9385286/…
  • 您不能使用foreach 循环为集合生成表单控件,这不能绑定到模型(请参阅this answer)。更不用说代码甚至无法编译
猜你喜欢
  • 2013-10-25
  • 2019-03-28
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多