У меня есть следующий код для создания представления.Эти поля должны быть извлечены из базы данных для создания HTML-элементов.Тип поля может быть string, bool и Array.При публикации данных, как я могу вернуть данные в соответствующие типы?Это можно сделать с помощью привязки пользовательской модели (IModelBinder).Я искал пример, но не смог его найти.
Контроллер:
public IActionResult Test()
{
var model = new Dictionary<string, object>
{{"first", "firstValue"}, {"second", "secondValue"}, {"third", new[] {"arjun", "khadka"}}};
//var view = new MyModel {MyDict = model};
return View(model);
}
[HttpPost]
public IActionResult Test(Dictionary<string, object> mydict)
{
var model = new Dictionary<string, object>();
return View(model);
}
Вид:
@model Dictionary<string, object>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Test</title>
</head>
<body>
<form method="post">
@foreach (KeyValuePair<string, object> item in Model)
{
@if (item.Value is Array array)
{<select multiple="multiple">
@foreach (var neitem in array)
{
<option value="@neitem">neitem</option>
}
</select>
}
else
{
<input name="@item.Key" value="@item.Value" />
}
}
<button type="submit"> save</button>
</form>
</body>
</html>
Страница: