我将我的Web应用程序从预览3转换为beta1,现在我正在尝试使用框架的新功能。其中之一是ModelBinding。
对于这种特殊情况,我创建了一个类(现在)只是一堆简单类型属性的容器。 如果我创建一个包含大量文本框的表单,我希望框架用这些字段填充SearchBag实例。
感谢任何帮助。
答案 0 :(得分:3)
- 我从哪里开始?这是这种行为吗? 开箱即用或我实施了 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];
}
或者你可以遍历Param,它将包含,Form,QueryString,Headers等。
foreach (var field in context.HttpContext.Request.Params.Keys) {
var value = context.HttpContext.Request.Params[field];
}
- 我在哪里可以找到最新的 有关此*的信息(大多数博客都是 过时的)?我以为我读了一篇文章 菲尔有一次,但我不能 似乎不再发现它了。
你说得对,Phil是ASP.NET MVC PM的最佳信息来源。