ASP.NET Core 绑定到字典

Dan*_*Dan 7 c# dictionary model-binding asp.net-core-mvc asp.net-core

在 ASP.NET Core 中,可以绑定字典值吗?

我在这个相关问题的最新答案 (不是标记正确的答案)中看到它指出:

在 ASP.NET MVC 4 中,默认模型绑定器将使用典型的字典索引器语法 property[key] 绑定字典。

对于 ASP.NET Core MVC(和/或 Razor Pages)来说也是如此吗?

Yin*_*qiu 6

是的,对于 ASP.NET Core MVC(和/或 Razor Pages)来说也是如此。

可以看到下面是一个在asp.net core中的简单demo。

班级:

 public class Command
{
    [Key]
    public string ID { get; set; }
    public string Name { get; set; }
    public Dictionary<string, string> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

行动:

 [HttpPost]
    public IActionResult Test(Command command)
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

看法:

@model Command
<form asp-action="Test">
    <input type="text" name="Id" />
    <input type="text" name="Name" />
    <input type="hidden" name="Values[0].Key" value="Apple" />
    <input type="text" name="Values[0].Value" />
    //....
    <input type="submit" value="Click" />
</form>
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

  • 如果您使用 `&lt;input type="hidden" name="MyDictionary[MyKey]" value="MyValue" /&gt;`,它将绑定到 `{[Mykey,MyValue]}` (2认同)
  • 请注意:如果您有“Dictionary&lt;string, string&gt;”,则此方法有效。如果你有一个“Dictionary&lt;string, object&gt;”,它将不会工作(即该值始终为空)。 (2认同)