我有一個很好的功能,我的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. 自定義ControllerContext
- 2. 將自定義模型綁定器綁定到自定義AuthorizeAttribute
- 3. 如何在自定義模型綁定中獲取模型?
- 4. 自定義模型綁定
- 5. T4MVC自定義模型綁定器
- 6. 自定義模型綁定器
- 7. asp.net mvc自定義模型綁定器
- 8. 模型綁定時獲取參數的自定義屬性
- 9. 模型綁定自定義類型
- 10. 與自定義模型綁定的遞歸模型綁定
- 11. 自定義模型綁定器來綁定嵌套屬性值
- 12. 自定義模型 - 從Cookie問題中抽取的綁定器?
- 13. .Net MVC3自定義模型綁定器 - 最初加載模型
- 14. asp.net Core 2自定義模型綁定器與複雜模型
- 15. 爲模型元組創建MVC自定義模型綁定器
- 16. 自定義模型與IModelBinder的綁定
- 17. 自定義模型綁定MVC
- 18. 自定義模型綁定和驗證
- 19. Asp.net MVC 3 - 自定義模型綁定
- 20. 自定義模型綁定問題
- 21. 自定義.find()綁定到Sequelize模型
- 22. asp.net mvc自定義模型綁定
- 23. Laravel自定義路由模型綁定
- 24. 自定義EditorTemplate的模型綁定
- 25. 複雜類型MVC的自定義模型綁定器3
- 26. 自定義多態模型綁定器不綁定派生類型的屬性
- 27. 自定義模型綁定,模型狀態和數據註釋
- 28. mvc6自定義模型綁定器沒有射擊
- 29. 抽象子對象的自定義模型綁定器
- 30. 自定義模型綁定器中的DataAnnotations驗證