我有一个很好的功能,我的FormCollection(从控制器提供)。现在我想做一个模型绑定,并让我的模型绑定器调用该函数,它需要FormCollection。出于某种原因,我可以找到它。我认为这将是 controllerContext.HttpContext.Request.Form
获取FormCollection出ControllerContext自定义模型绑定器
8
A
回答
15
试试这个:
var formCollection = new FormCollection(controllerContext.HttpContext.Request.Form)
的FormCollection是我们加入到ASP.NET MVC一个类型都有自己的ModelBinder的。您可以查看FormCollectionBinderAttribute的代码来查看我的意思。
0
使用bindingContext.ValueProvider(和bindingContext.ValueProvider.TryGetValue等)直接获取值。
1
直接访问表单集合似乎被压在了上面。以下是MVC4项目中的一个示例,其中我有一个自定义Razor EditorTemplate,它可以在单独的表单域中捕获日期和时间。自定义联编程序检索各个字段的值并将它们组合到DateTime
中。
public class DateTimeModelBinder : DefaultModelBinder
{
private static readonly string DATE = "Date";
private static readonly string TIME = "Time";
private static readonly string DATE_TIME_FORMAT = "dd/MM/yyyy HH:mm";
public DateTimeModelBinder() { }
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext == null) throw new ArgumentNullException("bindingContext");
var provider = new FormValueProvider(controllerContext);
var keys = provider.GetKeysFromPrefix(bindingContext.ModelName);
if (keys.Count == 2 && keys.ContainsKey(DATE) && keys.ContainsKey(TIME))
{
var date = provider.GetValue(string.Format("{0}.{1}", bindingContext.ModelName, DATE)).AttemptedValue;
var time = provider.GetValue(string.Format("{0}.{1}", bindingContext.ModelName, TIME)).AttemptedValue;
if (!string.IsNullOrWhiteSpace(date) && !string.IsNullOrWhiteSpace(time))
{
DateTime dt;
if (DateTime.TryParseExact(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0} {1}", date, time),
DATE_TIME_FORMAT,
System.Globalization.CultureInfo.CurrentCulture,
System.Globalization.DateTimeStyles.AssumeLocal,
out dt))
return dt;
}
}
return base.BindModel(controllerContext, bindingContext);
}
}
相关问题
- 1. 将自定义模型绑定器绑定到自定义AuthorizeAttribute
- 2. 自定义模型绑定
- 3. T4MVC自定义模型绑定器
- 4. 自定义模型绑定器
- 5. asp.net mvc自定义模型绑定器
- 6. 模型绑定自定义类型
- 7. 与自定义模型绑定的递归模型绑定
- 8. 自定义模型绑定器来绑定嵌套属性值
- 9. 自定义模型 - 从Cookie问题中抽取的绑定器?
- 10. asp.net Core 2自定义模型绑定器与复杂模型
- 11. .Net MVC3自定义模型绑定器 - 最初加载模型
- 12. 为模型元组创建MVC自定义模型绑定器
- 13. Asp.net MVC 3 - 自定义模型绑定
- 14. asp.net mvc自定义模型绑定
- 15. 自定义模型绑定问题
- 16. 使用DefaultModelBinder自定义模型绑定
- 17. 自定义模型绑定MVC
- 18. 自定义模型与IModelBinder的绑定
- 19. 自定义.find()绑定到Sequelize模型
- 20. 复杂类型MVC的自定义模型绑定器3
- 21. 自定义模型绑定,模型状态和数据注释
- 22. 如何在ASP.NET MVC中测试自定义模型绑定器?
- 23. 自定义模型绑定器未触发
- 24. 自定义模型绑定器中的DataAnnotations验证
- 25. 如何实现WebApi自定义模型绑定器
- 26. 自定义模型绑定器不会触发
- 27. AOP:自定义模型绑定器属性使用Ninject
- 28. 单元测试自定义模型绑定控制器
- 29. 使用MVC自定义模型绑定器?
- 30. 抽象子对象的自定义模型绑定器