【问题标题】:MVC 5 Bind Implement with all Parameters具有所有参数的 MVC 5 绑定实现
【发布时间】:2014-06-13 22:33:04
【问题描述】:

所以 MVC5 引入了新的Bind 属性,据我所知,它用于指定参数对象的哪些属性应该绑定。此外,这是一种有助于防止 XSS 和模型绑定攻击的安全措施。大多数教程都展示了它对模型的作用。

public async Task<ActionResult> Create ([Bind(Include="Id,Description,IsDone")] ToDo todo)

在我的应用程序中,我只在控制器和视图之间传递视图模型:

[HttpPost]
public ActionResult Create(UserViewModel vm)
{

}

我也应该在这里使用这种技术吗?

[HttpPost]
public ActionResult Create([Bind(Include="property, property2")]UserViewModel vm)
{

}

老实说,很少有我不想绑定到视图模型中的每个属性。

首先,我对Bind属性的理解准确吗?

其次,我对何时使用Bind属性的理解准确吗?

【问题讨论】:

  • “在我的应用程序中,我只在控制器和视图之间传递视图模型。” 我知道你发布这个问题已经有一段时间了,但你在这里的陈述很有趣我。你还在遵守这个规则吗?如果是这样,您是否有可以提供的小样本 sn-p(可能在编辑中)?仅供参考,在我背着 WebForms 猴子多年后,我才刚刚开始使用 MVC。我喜欢这样的格言,我想更好地理解如何实现你的提议。我很想看看你是如何将它付诸实践的——如果你有时间的话。
  • 我找到了我需要的东西here。感谢您的推动!

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


【解决方案1】:
  1. 你是正确的!
  2. 你也不错!

您已经很好地理解了该属性的用途。只有您可以防止森林火灾知道您是否应该使用该属性。如果您正在构建一个对数据敏感的应用程序,您绝对希望保护自己免于过度发布。如果您正在构建一个内部低风险应用程序,也许您可​​以跳过魔术字符串,信任您的用户,并且认为这不值得您花时间。

ASP.NET website 有更多关于过度发布的信息。

【讨论】:

  • 公平地说,我确实倾向于构建 Intranet 应用程序而不是 Internet 应用程序,但我确实想朝着它们前进。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
相关资源
最近更新 更多