【发布时间】:2019-11-14 07:15:24
【问题描述】:
我有以下代码来生成视图。这些字段应该从数据库中获取以生成 html 元素。字段类型可以是字符串、布尔值和数组。在发布数据时,我怎样才能将数据取回各自的类型?这可以使用自定义模型绑定( 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>
页面:
【问题讨论】:
-
通过使用 Dictionary
我能够获取输入字段的数据。考虑到我想要获取数据数组的多选情况。 -
@CamiloTerevinto 我如何才能为动态字段实现这一点?
标签: c# asp.net-core asp.net-core-mvc