【发布时间】:2018-11-30 04:56:28
【问题描述】:
我正在创建一个 ASP.NET 核心剃须刀页面 Web 应用程序,其中一个页面需要能够修改 Dictionary<string, string> 属性。
我要修改的对象如下:
public class Element
{
[Key]
public string ID {get;set;}
public Dictionary<string, string> Values = new Dictionary<string, string>();
}
我可以使用以下代码显示页面上的值:
<form method="POST">
<ul>
<li hidden="true">ID: <input asp-for="FocusedItem.ID"/></li>
@for (int i = 0; i < Model.FocusedItem.Values.Count(); i++)
{
<li>@Model.FocusedItem.Values.ElementAt(i).Key: <input asp-for="@Model.FocusedItem.Values.ElementAt(i).Value"/></li>
}
</ul>
<br />
<input type="submit" value="Submit" />
</form>
页面模型包含以下处理发布事件的方法:
public void OnPost(Element FocusedItem)
{
}
“ID”属性已正确填充,但是“Values”属性的计数为 0(表单上的输入值未绑定到字典)。怎么解决?
还有一个额外的问题 - 如何向字典中添加新元素?
编辑:代码 - -cshtml:https://raw.githubusercontent.com/thezaza101/RDMUI/master/Pages/Data/ElementManager.cshtml -cs:https://raw.githubusercontent.com/thezaza101/RDMUI/master/Pages/Data/ElementManager.cshtml.cs
【问题讨论】:
-
您的视图强类型化到什么?您如何以及在何处填充
Values属性? -
@shyju 我的观点强烈输入是什么意思?此应用程序是 REST 服务的 UI,我的 PageModel 中有一个 Element 类型的“FocusedItem”属性,该属性由服务器在 OnGet() 方法中填充。
-
尝试使用一对字段,例如
<input name="Values[0][key]">&<input name="Values[0][value]">。 -
@MarkG 不幸的是,这种方法不走运。
标签: c# asp.net-core razor-pages