【问题标题】:How are Vue js entities/models mapped to DTO's in the controller?Vue js 实体/模型如何映射到控制器中的 DTO?
【发布时间】:2019-02-11 15:51:53
【问题描述】:

如果我要使用 Vue.js 在前端运行发布请求并发布包含我需要回发的数据的 javascript 实体模型,它如何映射到我发布此实体的控制器中的 DTO回到?它是根据属性的名称自动完成的,还是有更多的功能?

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

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

【问题讨论】:

    标签: .net vue.js asp.net-core dto


    【解决方案1】:

    你的问题真的没有意义。 Vue.js 与这里的任何事情都无关。数据通过以下两种方式之一发布:传统表单发布(form 元素和各种 inputs、selects 和/或 textarea 包含在其中的元素)或通过 AJAX。作为 AJAX,帖子正文的内容类型完全取决于您,所以它可以是 x-www-form-urlencoded(与传统表单帖子相同)、application/json(JSON 对象)、application/xml(XML 文档)或完全不同的东西。

    无论采用何种方式,模型绑定器都用于根据“绑定”(操作参数类型和/或其成员类型)以某种方式从发布的数据创建 C# 对象。这是通过检查这些绑定然后更新一个或多个类型并映射发布数据来完成的,必要时强制类型。这有点迟钝,我知道。简单地说,您希望在作为操作参数的内容与您在帖子中发送的内容之间创建一对一的对应关系。换句话说,如果您绑定到一个具有名为 Foo 的成员的类,那么您发送的内容中应该有一个名为 Foo 的内容。

    如果您要发布 JSON,那么您基本上只是将 C# 类的一个非常精确的副本构建为一个 JavaScript 对象。如果您要发送传统表单帖子 (x-www-form-urlencoded),那么您将需要遵循模型绑定约定以确保正确投影帖子值。这意味着与. 链接(即Foo.Bar 将映射到Foo 属性类型的Bar 成员),并且列表通过索引处理(即ListPropery[N] 其中N 是项目索引。

    【讨论】:

      猜你喜欢
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-28
      相关资源
      最近更新 更多