【问题标题】:ModelBinding in asp.net mvc Beta1asp.net mvc Beta1中的模型绑定
【发布时间】:2010-09-21 06:25:07
【问题描述】:

我将我的 Web 应用程序从预览版 3 转换为 beta1,现在正尝试使用该框架的新功能。其中之一是 ModelBinding。

对于这种特殊情况,我创建了一个类,它(目前)只是一堆简单类型属性的容器。 如果我创建一个包含一堆文本框的表单,我希望框架用这些字段填充 SearchBag 实例。

  • 我从哪里开始?这是行为吗 开箱即用还是我实施 SearchBagBinder?我快速浏览了一下 在 IModelBinder 但不能完全 把我的头绕在它周围 DefaultModelBinder 源没有 让我变得更聪明。
  • 什么是 ModelBindingContext?
  • 如何访问我的表单域?
  • 如果没有传递值怎么办 通过表格,而不是通过输入 直接网址?
  • 在哪里可以找到最新的 这方面的信息(大多数博客是 过时)?我以为我读了一个帖子 菲尔一次,但我不能 好像找不到了。

感谢任何帮助。

【问题讨论】:

  • 3 票,两颗星,没有答案 :(
  • 3 票是因为 3 人认为这是一个好问题,2 星是因为 2 人将其列为最喜欢的问题并有兴趣跟踪回复。
  • 我知道星星和投票是为了什么......我只是在发泄我对答案的需求。

标签: asp.net-mvc model-binding


【解决方案1】:
  • 我从哪里开始?这是行为吗 开箱即用还是我实施 SearchBagBinder?我快速浏览了一下 在 IModelBinder 但不能完全 把我的头绕在它周围 DefaultModelBinder 源没有 让我变得更聪明。

它是开箱即用的。您可以使用 UpdateModel 或 ModelBinder 来实现您想要做的事情。

  • 什么是 ModelBindingContext?

这包含将请求绑定到您的模型的所有必要信息。与 ControllerContext 和 ActionFilterContext 类似,它基本上是 ModelBinder 的状态,并且包含执行所需操作所需的所有信息,前提是您遵循 ASP.NET MVC 团队关于 ModelBinder 应该做什么的建议。

  • 如何访问我的表单域?
context.HttpContext.Request.Forms["myformfield"];

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
  • 如果没有传递值怎么办 通过表格,而不是通过输入 直接网址?

如果您需要同时检查 Form 和 QueryString,只需遍历这两个集合即可。

foreach (var field in context.HttpContext.Request.Forms.Keys) {
    var value = context.HttpContext.Request.Forms[field];
}
foreach (var field in context.HttpContext.Request.QueryStrings.Keys) {
    var value = context.HttpContext.Request.QueryStrings[field];
}

或者您可以循环访问包含 Form、QueryString、Headers 等的 Param。

foreach (var field in context.HttpContext.Request.Params.Keys) {
    var value = context.HttpContext.Request.Params[field];
}
  • 我在哪里可以找到最新的 这方面的信息*(大多数博客是 过时)?我以为我读了一个帖子 菲尔一次,但我不能 好像找不到了。

你说得对,Phil 作为 ASP.NET MVC 的 PM 是获取信息的最佳场所。

【讨论】:

  • 当他们提到 HttpContext 时,我从来没有发现这些教程在谈论什么。我没有得到那个属性。直到我将 System.Web.Routing 添加到我的引用中!嗬!非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 2011-03-15
  • 2013-05-27
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
相关资源
最近更新 更多