【问题标题】:Passing data with model that gets submitted via POST?使用通过 POST 提交的模型传递数据?
【发布时间】:2016-10-26 20:17:14
【问题描述】:

所以在视图上,我们有很多对象正在映射文本框以将数据发送到模型以供控制器使用,如下所示:

@Html.TextBoxFor(x => x.FilesAsString, new {@class = "form-control", type = "number"})

相当标准的东西。

如何在 POST 操作之前包含应在视图中设置的此模型的其他属性? (这将是用户无法看到且无法编辑的内容)。

例如,我想将存储在 Session["_User"] 中的当前用户数据传递到具有属性 x.CurrentUser 的模型中。

我觉得我想多了,但我不知道。

【问题讨论】:

  • 如果它在视图中,用户可以看到并编辑它。

标签: c# asp.net-mvc post view model


【解决方案1】:

我才意识到我的问题是多么愚蠢。

我有一个Session["_User"] 对象-控制器可以访问它。我只需要在 Controller 中使用Session["_User"]

我需要休息一下……

编辑我留下我的问题和答案,希望它可以帮助其他一些睡眠不足的开发人员。

【讨论】:

  • 对于那些想要将此行为用于多页表单的人,如果不考虑安全性,隐藏输入可能更可取。否则, TempData 是理想的,因为一旦读取值就会自动清除(TempData.Peek(key) 可用于验证数据而不清除它)。 TempData 的自动清除有两个非常有用的好处: 1. 一旦不再需要数据,您就不必手动清除数据。 2.如果出现(意外)Bug,比如重复提交问题,TempData中的数据只能访问一次,并且会抛出异常,适合Bug。
  • 我最初是在考虑使用隐藏输入。使用它本来就可以工作,但我知道这不是最好的选择——安全方面。是的,我认为 TempData 在这种情况下会起作用,但在我看来,我更多地考虑的是与正在发布的模型绑定的东西(并且必须通过重载访问)类似于隐藏的输入,但不太明显。
猜你喜欢
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多