Derzeit habe ich eine IActionFilter
, die eine List<T>
als Parameter akzeptiert. In dieser Aktionsmethode untersuche ich die veröffentlichten Viewmodel-Werte. Es sieht ungefähr so aus:Zugriff auf gebuchte Werte in benutzerdefinierten Modellbinder
[HttpPost]
public async Task<IActionResult> SavePage(List<BaseField> fields)
{
for (var i = 0; i < fields.Count; i++)
{
if (fields[i].Type == "bb")
{
var inputObj = new InputConfigViewModel();
await TryUpdateModelAsync(inputObj, $"fields[{i}]");
}
if (fields[i].Type == "ee")
{
var tObj = new TextareaConfigViewModel();
await TryUpdateModelAsync(tObj, $"fields[{i}]");
}
}
return RedirectToAction("Index", "Dashboard");
}
Das funktioniert so weit. Aber ich möchte diesen Code zu einer benutzerdefinierten ModelBinder
Klasse abstrahieren.
public class BaseFieldModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
// Need access to "List<BaseField> fields"...
return Task.CompletedTask;
}
}
Wie kann ich erhalten die List<BaseField> fields
Werte in meinem ModelBinder
, wie kann ich von der Aktion-Methode in meinem Controller
?