Vue js entities/models 如何映射到控制器中的 DTO?

How are Vue js entities/models mapped to DTO's in the controller?

如果我要 运行 在前端使用 Vue.js 和 post javascript 具有数据 i 的实体模型 post 请求需要 post 返回,这如何映射到我 post 这个实体返回的控制器中的 DTO?它是根据属性的名称自动完成的还是除此之外还有更多?

this.$http.post(this.apiUrl, this.entity).then(saveCallback, this.dataReadFailure);
   public virtual async Task<ActionResult> Post([FromBody] CreateUpdateDTO dto)   

如果我有类似上面的内容,post 请求中的实体如何映射到控制器中的 DTO?

你的问题没有道理。 Vue.js与这里无关。数据是 posted 两种方式之一:传统形式 post(form 元素和各种 inputs,selects and/or textarea 中包含的元素) 或通过 AJAX。由于 AJAX,post 正文的内容类型完全由您决定,因此可以是 x-www-form-urlencoded(与传统形式 post 相同)、application/json (一个 JSON 对象),application/xml(一个 XML 文档),或者其他完全不同的东西。

无论采用何种方式,都采用模型绑定器以某种方式从 posted 数据创建 C# 对象,基于 "bindings"(操作参数类型 and/or 其成员类型).这是通过检查这些绑定,然后更新一个或多个类型并将 post 数据映射到上面,并在必要时强制类型来完成的。这有点迟钝,我知道。简单地说,您希望在您作为操作参数获得的内容与您在 post 中发送的内容之间建立一对一的对应关系。换句话说,如果您要绑定到一个 class,它有一个名为 Foo 的成员,那么在您发送的内容中应该有一个名为 Foo 的东西。

如果您正在 posting JSON,您基本上只是要构建一个几乎完全相同的 C# class 副本作为 JavaScript 对象.如果您要发送传统形式 post (x-www-form-urlencoded),那么您将需要遵循模型绑定约定以确保正确投影 post 值。这意味着使用 . 链接(即 Foo.Bar 将映射到 Foo 属性 类型的 Bar 成员,并且列表通过索引处理(即 ListPropery[N] 其中 N 是项目索引。